【问题标题】:Rails3 ajax callback has empty xhrRails3 ajax 回调有空的 xhr
【发布时间】:2010-09-20 01:21:21
【问题描述】:

我发现我的 Rails3 应用出现了一些奇怪的行为。请注意,我使用的是 jQuery 版本的 rails.js

来自rails.js,从第 49 行开始

 error: function (xhr, status, error) {
   el.trigger('ajax:failure', [xhr, status, error]);
   alert('error in: ' + xhr.responseText ); 
 }

从我的 jQuery 代码到表单之后执行。

 .bind('ajax:failure', function(xhr, status, error) {
    alert('error in: ' + xhr.responseText );
 })

在 rails.js 的警报中显示预期的返回文本,但我的回调显示的警报:

  error in: undefined

因此,xhr 似乎没有正确发送到回调。是我做错了什么,还是rails.js 的问题?

进一步的测试表明这适用于ajax:failureajax:success 回调。通过ajax:success 回调,服务器响应在status,所以我没有注意到这种行为。

【问题讨论】:

    标签: ajax ruby-on-rails-3


    【解决方案1】:

    来自.trigger() 上的 jQuery 文档:

    "事件对象总是作为 事件的第一个参数 处理程序,但如果附加参数 在 .trigger() 调用期间指定 因为他们在这里,这些参数 将传递给处理程序 好吧。”

    他们给出的例子是:

    $('#foo').bind('custom', function(event, param1, param2) { alert(param1 + "\n" + param2); }); $('#foo').trigger('custom', ['Custom', 'Event']);

    所以我更新了: .bind('ajax:failure', function(xhr, status, error)

    到: .bind('ajax:failure', function(event, xhr, status, error)

    它现在工作正常。显然是我的错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 2011-07-01
      • 1970-01-01
      • 2019-06-14
      相关资源
      最近更新 更多