我有一個通過AJAX提交表單的表單:remote => true。縱觀服務器日誌和螢火,我得到的響應200 OK和它的形式返回JSON:jQuery ajax:即使響應正常也會運行錯誤200
{ "email": "[email protected]"}
然後,我有兩個處理程序:
$('#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
[email protected]
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: [email protected]' %>
<%= f.text_field :role, :'placeholder' => 'ex: Photographer' %>
<%= f.submit "Invite", :class => 'btn btn-success' %>
<% end %>
EDIT 2 ---------
我做幾個變化,現在看來我的錯誤是一個解析錯誤。我不明白,因爲這是我從服務器獲取(data.responseText),這似乎都好後面的JSON:
{"email":"[email protected]"}
答案--------- 我設法把一切工作當我在表單選項中輸入:'data-type'=>:json時。我嘗試過這一點,並沒有奏效,因爲我把它放在的form_tag選項,而不是HTML選項...
向我們展示你的Ajax請求。 –
console.log所有三個參數,更可能是你越來越parseerror這將意味着無效的JSON。 –
Kevin =>我甚至沒有迴應JSON。我起初做了,但不是我只是渲染一個文本字符串,它仍然失敗。 – Alain