1

我有一个连接到 Rails 服务器的移动应用程序。

当我尝试Item使用 JSON 请求从我的应用程序修改 Rails 数据库中的一个时,我在第一次发出 ajax 请求时收到一条错误消息。

{"readyState":0,"responseText":"","status":0,"statusText":"error"}

 $.ajax({
    url: 'xxx',
    type: 'PUT',
    data: item,
    dateType: 'json'
    success: (response) ->
    error: (response) ->
      alert JSON.stringify(response) # {"readyState":0,"responseText":"","status":0,"statusText":"error"}

如果我检查我的 Rails 日志,服务器PUT不会调用给定控制器的操作。

然后我的浏览器会自动重新加载。现在,如果我尝试修改该项目,一切正常......

你知道为什么吗?

编辑

对我的 Rails API 的所有其他操作调用(除了PUT)都会成功。

4

1 回答 1

0

感谢这篇文章,我找到了答案:

您的 Ajax 请求是通过表单提交或单击链接触发的,并且您没有在事件处理程序中调用 e.preventDefault() 。浏览器将继续提交表单或点击链接并执行您的 Ajax 代码。表单提交或链接将获胜,浏览器将立即终止您的请求并返回一个 readyState 0。

添加e.preventDefault会阻止提交表单(提交 = 刷新,因为我使用的是单页模板)。

于 2013-08-26T22:07:04.877 回答