Rails:“head:ok”解释为“ajax:error”
可能重复:
jquery不会在$ .ajax上调用rails标准REST DELETE答案的成功方法
我响应远程链接(data-remote =“true”data-type =“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文件中, ajax:complete被触发并输出200 (data.status) 。
$( '#myElement' ).on( 'ajax:complete', function( e, data ) { console.log( data.status ); });
数据看起来像这样:
... readyState: 4 responseText: " " setRequestHeader: function ( name, value ) {... state: function () {... status: 200 statusCode: function ( map ) {... statusText: "OK" ...
看起来对我很好……
问题
而不是ajax:success ,jQuery (jquery-ujs)执行ajax:error ,我不知道为什么没有给出错误。
我已经研究了很多讨论,但这种方式似乎总是解决方案,而不是问题。 感谢您的任何帮助!
这里回答。
jQuery期待JSON响应。 “head:ok”为响应主体提供了一个空间,因此jQuery无法解析JSON响应,因此仍然认为200状态代码是错误的。
你可以让Rails响应head :no_content
,它有一个空体或一个render :json=>true
这在Rails中讨论过。
head :ok
单个空间的原因head :ok
Rails中的head :ok
是一个旧的Safari bug的解决方法。