jQuery ajax: błąd działa, nawet jeśli odpowiedź jest OK 200
Mam formularz, który przesyła formularz przez AJAX za pomocą: remote => true. Patrząc na dziennik serwera i FireBug, otrzymuję odpowiedź 200 OK i zwraca JSON w postaci:
{ "email": "[email protected]"}
potem mam tych dwóch handlerów:
$('#new_invitation').bind("ajax:success", function(event, data, status, xhr) {
alert('test');
});
$('#new_invitation').bind("ajax:error", function() {
alert('error');
});
a nawet jeśli odzyskuję 200OK, uruchamia się program obsługi błędów. Jedynym momentem, w którym udało mi się doprowadzić do tego, aby praca obsługi sukcesów była możliwa, było wysłanie pustej odpowiedzi z 200 w nagłówku.
Nie mogę zrozumieć, dlaczego to nie działa: -S
EDYCJA 1 ------------ Po wykonaniu tych zmian:
$('#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);
});
Nadal mam ten sam błąd. Materiał dziennika daje mi:
undefined
[email protected]
undefined
Oto kod formularza (standardowe materiały 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 %>
EDYCJA 2 ---------
Zrobiłem kilka zmian i teraz wydaje się, że mój błąd jest błędem analizy. Nie rozumiem, ponieważ jest to JSON, który wracam z serwera (data.responseText), który wydaje się całkiem dobry:
{"email":"[email protected]"}
ODPOWIEDŹ --------- Udało mi się, że wszystko działało po umieszczeniu: 'data-type' =>: json w opcjach formularza. Próbowałem tego wcześniej i nie zadziałało, ponieważ umieściłem go w opcjach form_tag, a nie w opcjach html ...