Rails:“head:ok”解释为“ajax:error”[重复]

2024-05-01

可能的重复:
jquery 不会在 $.ajax 上调用 success 方法以获取 Rails 标准 REST DELETE 答案 https://stackoverflow.com/questions/4791499/jquery-doesnt-call-success-method-on-ajax-for-rails-standard-rest-delete-answ

我响应远程链接(数据远程=“true”数据类型=“json”)和输出

format.json { head :ok }

在我的 Rails (3.2.6) 控制器中,它创建了这个标头:

Status Code:200 OK

...
Connection:keep-alive
Content-Length:1
Content-Type:application/json; charset=utf-8
Server:thin 1.4.1 codename Chromeo
Set-Cookie: ... path=/; HttpOnly
X-UA-Compatible:IE=Edge
...

在我的 JavaScript 文件中阿贾克斯:完成被触发并输出200 (数据.状态).

  $( '#myElement' ).on( 'ajax:complete', function( e, data ) {
    console.log( data.status );
  });

data看起来像这样:

 ...
 readyState: 4
 responseText: " "
 setRequestHeader: function ( name, value ) {...
 state: function () {...
 status: 200
 statusCode: function ( map ) {...
 statusText: "OK"
 ...

对我来说看起来不错...

问题

代替阿贾克斯:成功, jQuery(jquery-ujs)执行阿贾克斯:错误我不知道为什么,因为没有给出错误。

我研究了很多讨论,但这种方式似乎总是解决方案,而不是问题。感谢您的任何帮助!


已回答here https://stackoverflow.com/questions/4791499/jquery-doesnt-call-success-method-on-ajax-for-rails-standard-rest-delete-answ.

jQuery 正在等待 JSON 响应。 “head :ok”的响应主体有一个空格,因此 jQuery 无法解析 JSON 响应,因此它仍然认为 200 状态代码是一个错误。

你可以让 Rails 响应head :no_content它有一个空的主体或一个render :json=>true

Rails 中对此进行了讨论here https://github.com/rails/rails/issues/1742.

单个空格的原因head :okin Rails 是旧 Safari 错误的解决方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails:“head:ok”解释为“ajax:error”[重复] 的相关文章

随机推荐