轨道3 - ajax的形式阿贾克斯:成功事件不会被调用轨道、形式、事件、ajax

2023-09-10 19:12:15 作者:ぐ温柔行凶者

在很多故障排除,我无法弄清楚,为什么我的表格的Ajax:成功的回调没有被称为轨道3

以下是我认为最终产生的code:

JS code:

  $(函数(){
  $(#的MyForm)绑定(AJAX:成功',功能(数据,状态,XHR){
    警报(形式成功);
    的console.log(数据);
    执行console.log(状态);
  })绑定(AJAX:错误',功能(XHR,状态,错误){
    执行console.log(错误);
    执行console.log(状态);
  });
});
 

阿贾克斯形式:

 <形式接收字符集=utf-8行动=/ MYC /妙数据远程=真正的ID =MyForm的方法=邮报&GT ; < D​​IV的风格=保证金:0;填充:0;显示:内联><输入名称=UTF8类型=隐藏值=&放大器;#x2713; /><输入名称=authenticity_token类型=隐藏值=hZuhxwboQj2qo8MPIR8DWwYMqAC1V2yqG + DX9UnlIr0 =/>< / DIV>
          <输入类=大ID =foo的名称=富类型=文本/>
        <输入类=BTN成功数据禁用,与=工作...NAME =提交类型=提交/>
        < /形式GT;
 
集成底座统一认证配置说明

此之后发生在动作的逻辑,形式职位:

  @foo = {:富=> 酒吧 }
 渲染(:JSON => @ foo.to_json,:CONTENT_TYPE =>应用/ JSON的,
        :布局=>假)
 

我已经Firebugged这整个请求/响应:

 它说200确定。和响应头是:

缓存控制最大年龄= 0,民营,必重新验证
连接保持
内容长度13
内容类型的应用程序/ JSON;字符集= UTF-8
日期星期一,2012十点37分十九秒格林尼治标准​​时间1月23日
Etag的9bb58f26192e4ba00f01e2e7b136bbd8
服务器的WEBrick / 1.3.1(红宝石/ 1.9.2 / 2011-07-09)
设置Cookie _session_id=BAh7CkkiD3Nlc3Npb25faWQGOgZFRiIlMGIzZGRhZDQ2ZjNmYzUzOWJkMzBkZWMxZDBmMDgwODZJIhBfY3NyZl90b2tlbgY7AEZJIjFoWnVoeHdib1FqMnFvOE1QSVI4RFd3WU1xQUMxVjJ5cUcrRFg5VW5sSXIwPQY7AEZJIhJyZXF1ZXN0X3Rva2VuBjsARkkiMGlCVmFZYllrU2R1RHl2aVZ4ZGc3ZWxKdmVxZkdFa1VKYWVXaHU0eXBmR1kGOwBUSSIZcmVxdWVzdF90b2tlbl9zZWNyZXQGOwBGSSIwcFdGTUVTUGt6d2VSY1pzV2YxU3JLNmFJSEpCU3FGMDh2ZmZ2U0pFaVI4cwY7AFRJIhRjdXJyZW50X3VzZXJfaWQGOwBGSSIpZDZiZDdhMjYtNDRjNi0xMWUxLTkwMDItZmExMjJjNjJmZTFmBjsARg%3D%3D--78099c697506ede3c7e9a833efa1785c6f1b9a6e;路径= /;仅Http
的X运行时0.354051
的X UA-兼容IE =边缘
 

的响应,如预期:

  {富:巴}
 

200 OK响应会触发AJAX:成功在我的JS ...但是这没有发生。有什么想法吗?错误回调没有被击中要么...

解决方案

我有同样的问题。 90分钟的寻找后,我终于得到它通过使用以下工作:

  $(文件)。在('阿贾克斯:成功','.delete',功能(五){
    $(e.currentTarget).closest('格')淡出();
});
 

感谢:http://stackoverflow.com/users/1609186/ivan-fong

我创建,然后试图删除我刚刚创造,通过Ajax请求所有。希望这可以帮助别人。

After much troubleshooting, I am not able to figure out why my form's ajax:success callback is not being called in rails 3.

Following is the code ultimately generated in my view:

JS Code:

$(function() {
  $("#myform").bind('ajax:success', function(data, status, xhr) {
    alert("form success");
    console.log(data);
    console.log(status);
  }).bind('ajax:error', function(xhr, status, error) {
    console.log(error);
    console.log(status);
  });
});

Ajax Form:

<form accept-charset="UTF-8" action="/myc/mya" data-remote="true" id="myform" method="post">       <div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="hZuhxwboQj2qo8MPIR8DWwYMqAC1V2yqG+DX9UnlIr0=" /></div>
          <input class="large" id="foo" name="foo" type="text" />
        <input class="btn success" data-disable-with="Working..." name="commit" type="submit" />
        </form>

Following the logic that happens in the action which the form posts to:

 @foo = { :foo => "bar" }
 render(:json => @foo.to_json, :content_type => 'application/json',
        :layout => false)

I have Firebugged this entire request/response:

It says 200 OK. And the Response Headers are:

Cache-Control   max-age=0, private, must-revalidate
Connection  Keep-Alive
Content-Length  13
Content-Type    application/json; charset=utf-8
Date    Mon, 23 Jan 2012 10:37:19 GMT
Etag    "9bb58f26192e4ba00f01e2e7b136bbd8"
Server  WEBrick/1.3.1 (Ruby/1.9.2/2011-07-09)
Set-Cookie  _session_id=BAh7CkkiD3Nlc3Npb25faWQGOgZFRiIlMGIzZGRhZDQ2ZjNmYzUzOWJkMzBkZWMxZDBmMDgwODZJIhBfY3NyZl90b2tlbgY7AEZJIjFoWnVoeHdib1FqMnFvOE1QSVI4RFd3WU1xQUMxVjJ5cUcrRFg5VW5sSXIwPQY7AEZJIhJyZXF1ZXN0X3Rva2VuBjsARkkiMGlCVmFZYllrU2R1RHl2aVZ4ZGc3ZWxKdmVxZkdFa1VKYWVXaHU0eXBmR1kGOwBUSSIZcmVxdWVzdF90b2tlbl9zZWNyZXQGOwBGSSIwcFdGTUVTUGt6d2VSY1pzV2YxU3JLNmFJSEpCU3FGMDh2ZmZ2U0pFaVI4cwY7AFRJIhRjdXJyZW50X3VzZXJfaWQGOwBGSSIpZDZiZDdhMjYtNDRjNi0xMWUxLTkwMDItZmExMjJjNjJmZTFmBjsARg%3D%3D--78099c697506ede3c7e9a833efa1785c6f1b9a6e; path=/; HttpOnly
X-Runtime   0.354051
X-Ua-Compatible IE=Edge

The response is, as expected:

{"foo":"bar"}

200 OK response should trigger 'ajax:success' in my JS... but this is not happening. Any thoughts? The error callback is not being hit either...

解决方案

I had this same issue. After 90 minutes of searching I finally got it to work by using the following:

$(document).on('ajax:success', '.delete', function(e) {
    $(e.currentTarget).closest('div').fadeOut();
});

Credit to: http://stackoverflow.com/users/1609186/ivan-fong

I was creating and then trying to delete what I had just created, all via ajax requests. hope this can help someone.

 
精彩推荐
图片推荐