Tengo un formulario que envía un formulario a través de AJAX con: remote => true. Mirando el registro del servidor y FireBug, me da la respuesta 200 OK y se devuelve JSON en forma de:jQuery ajax: el error se ejecuta incluso si la respuesta es correcta 200
{ "email": "[email protected]"}
entonces tengo estos dos manipuladores:
$('#new_invitation').bind("ajax:success", function(event, data, status, xhr) {
alert('test');
});
$('#new_invitation').bind("ajax:error", function() {
alert('error');
});
e incluso si regreso un 200OK, es el controlador de errores que se dispara. La única vez que logré que el controlador de éxito funcione fue cuando envío una respuesta vacía con 200 en el encabezado.
No puedo entender por qué esto no está funcionando: -S
EDIT 1 ------------ Después de hacer estos cambios:
$('#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 sigue recibiendo el mismo error. El material de registro me da:
undefined
[email protected]
undefined
Aquí está el código para el formulario (estándar cosas rieles):
<%= 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 ---------
lo hice algunos cambios y ahora parece que mi error es un error de análisis. No entiendo porque este es el JSON que estoy recibiendo de vuelta desde el servidor (data.responseText), que parece todo bien:
{"email":"[email protected]"}
RESPUESTA --------- he conseguido tener todo el trabajo cuando puse: 'data-type' =>: json en las opciones de formulario. He intentado esto antes y no funcionó porque lo puse en las opciones form_tag y no las opciones de HTML ...
Muéstranos su petición Ajax. –
console.log en los tres argumentos, lo más probable es que obtenga parseerror, lo que significaría json no válido. –
Kevin => Ni siquiera estoy respondiendo con JSON. Lo hice al principio, pero no solo estoy renderizando una cadena de texto y aún falla. – Alain