I have a form that submits a form via AJAX: remote => true. Looking at the server log and FireBug, I get a 200 OK response, and it returns JSON in the form:
{ "email": "test@test.com"}
then I have these two handlers:
$('#new_invitation').bind("ajax:success", function(event, data, status, xhr) { alert('test'); }); $('#new_invitation').bind("ajax:error", function() { alert('error'); });
and even if I go back to 200OK, it will be an error handler. The only time I managed to get the success handler to work was when I sent an empty response with 200 in the header.
I can not understand why this does not work: -S
EDIT 1 ------------ After making these changes:
$('#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); });
I am still getting the same error. The material of the magazine gives me:
undefined my_email@test.com undefined
Here is the code for the form (standard Rails stuff):
<%= 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 %>
EDIT 2 ---------
I made a few changes, and now it seems that my error is a parsing error. I do not understand, because it is JSON, I am returning from the server (data.responseText), which seems to be all good:
{"email":"zxxczxc@test.com"}
ANSWER --------- I managed to work everything when I set: 'data-type' =>: json in the form option. I tried this before, and it did not work, because I put it in the form_tag options and not in the html options ...