J'utilise Rails 3 et JQuery 1.4.2 et j'essaye de me lier au rappel ajax: failure sur une soumission de formulaire distant donnée. Le callback fonctionne bien, cependant, la variable xhr qui est passée semble perdre l'attribut responseText d'une façon ou d'une autre.JQuery et Rails 3 ajax: callback d'échec
Voici ce que mon code ressemble à:
_form.html.haml
= form_for(object, :remote => true) do |f|
= form fields and such...
Javascript quelque part ...
$('form').livequery('ajax:loading', function() {
// what to do on ajax loading
}).livequery('ajax:success', function(data, status, xhr) {
}).livequery('ajax:failure', function(xhr, status, error) {
alert(xhr.responseText);
});
Je rend fondamentalement les messages d'erreur de l'objet de la contrôleur afin que je puisse afficher des notifications d'erreur sur ce rappel. La chose étrange est que je vais dans rails.js, lignes 49-51
error: function (xhr, status, error) {
el.trigger('ajax:failure', [xhr, status, error]);
}
et écrire manuellement à la responseText de la console, il fonctionne de la façon dont je me attends.
Est-ce que je fais quelque chose de mal? Comment l'objet xhr passerait-il de rails.js à ma liaison?
J'ai également réalisé pourquoi les vars ne correspondaient pas. Apparemment, puisque je suis lié à l'événement, la première variable transmise serait l'événement réel lancé avec le xhr, l'état, et l'erreur étant également passée après. – ncavig