:remote=>trueでAJAX経由でフォームを送信するフォームがあります。サーバーログとFireBugを見ると、応答200 OKが返され、次の形式でJSONが返されます。
{ "email": "test@test.com"}
次に、これら2つのハンドラーがあります。
$('#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---------
いくつか変更を加えましたが、エラーは解析エラーのようです。これはサーバーから返されるJSON(data.responseText)であるため、理解できません。これはすべて問題ないようです。
{"email":"zxxczxc@test.com"}
回答---------フォームオプションに:'data-type' =>:jsonを入力すると、すべてが機能するようになりました。以前にこれを試しましたが、htmlオプションではなくform_tagオプションに入れたため、機能しませんでした...