微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript-即使响应正常,也会运行jQuery ajax:error 200

我有一个表单,该表单通过:remote =>通过AJAX提交表单.真正.查看服务器日志和FireBug,我得到响应200 OK,它以以下形式返回JSON

{ "email": "test@test.com"}

那么我有两个处理程序:

$('#new_invitation').bind("ajax:success", function(event, data, status, xhr) {
    alert('test');
});

$('#new_invitation').bind("ajax:error", function() {
    alert('error');
});

即使我退回200OK,也会触发错误处理程序.我唯一使成功处理程序起作用的方法是,我发送了标头中带有200的空响应.

我不知道为什么这不起作用:-S

编辑1 ————
完成这些更改后:

$('#new_invitation').bind("ajaxSuccess", function(event, data, status, xhr) {
    alert('test');
});

$('#new_invitation').bind("ajaxError", function(jqXHR, textStatus, errorThrown) {
alert('error');
    console.log(jqXHR.responseText);
    console.log(textStatus.responseText);
    console.log(errorThrown.responseText);
});

我仍然遇到相同的错误.日志的东西给我:

undefined
my_email@test.com
undefined

这是表单的代码(标准的Rails东西):

<%= form_for @shoot.invitations.new, :url=>shoot_invitations_path(@shoot), :remote => true, :html => {:class => 'form-inline'} do |f| %>
    <%= f.text_field :email, :'placeholder' => 'ex: test@test.com' %>
    <%= f.text_field :role, :'placeholder' => 'ex: Photographer' %>
    <%= f.submit "Invite", :class => 'btn btn-success' %>
<% end %>

编辑2 ———

我做了一些更改,现在看来我的错误是解析错误.我不明白,因为这是我从服务器(data.responseText)取回的JSON,这似乎很好:

{"email":"zxxczxc@test.com"}

回答———
当我输入:’data-type’=>时,我设法使所有工作正常. :json的形式选项.我之前尝试过此方法,但由于我将它放在form_tag选项而不是html选项中而无法使用…

解决方法:

如果服务器返回的无效JSON内容(例如单个空格),则jQuery将生成一个解析错误,即使状态码为200,也将其视为失败请求.

从jQuery 1.9开始,当类型设置为JSON时,完全空响应被视为失败请求,因为空字符串是无效JSON.参见http://jquery.com/upgrade-guide/1.9/#jquery-ajax-returning-a-json-result-of-an-empty-string.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐