2009-03-11 3 views
3

Was ist der beste Weg, die AJAX-Funktionalität mit jQuery an ein bestehendes Formular anzubinden und eine Fehlerbehandlung zu ermöglichen.jQuery-Plug-In zum Verbinden von AJAX-Formularen - MUSS einen Fehlerrückruf liefern

Die jQuery.ajax(...) eingebaute Funktion hat die folgende (sinnvoll) Callback-Funktionen:

beforeSend

komplette

dataFilter

Fehler

Erfolg

Ich dachte, ich hätte meine Antwort mit dem jQuery.Form Plugin gefunden, aber aus irgendeinem verrückten Grund geben sie Ihnen keinen Zugriff auf einen Fehlerrückruf !! Abgesehen von dieser Unterlassung scheint es ziemlich nützlich zu sein.

Ich bin wirklich erschrocken über die Menge der Artikel, die empfehlen, jQuery.get zu verwenden, bevor sie jQuery.ajax empfehlen würden. Nur zur Erinnerung: get() hat keinen Fehler Callback, aber ajax() tut.

Meiner Meinung nach sollten Sie immer Verwendung ajax(), weil Sie sollten immer einige Art von Fehler haben logische Handhabung.

Gibt es irgendwelche anderen netten Plugins - besonders etwas, das gut mit ASP.NET-MVC spielt, die ich verwenden sollte, die das Anhängen alles einfacher machen?

Antwort

6

Dies ist ein sehr einfaches Snippet, das ich von einem Projekt von mir kopiert und es nur ein wenig gehackt habe (kaum getestet). Lass mich wissen, ob das funktioniert.

(function() { 
$.fn.ajaxify = function(options) { 
    $(this).submit(function(e) { 
     var form = $(this); 
     $.ajax({ 
      type : form.attr('method'), 
      url : form.attr('action'), 
      data : form.serialize(), 
      error : options.error, 
      success : options.success, 
      dataType : "script" 
     }); 

     return false; 
    }); 
} 
})(); 

mit es:

$('form').ajaxify(
    {success: success_method_name, 
    error: error_method_name}); 
+0

schläfrig werden, aber ich werde es testen und melden zurück. aber ja das ist die Art von was ich suche, aber wahrscheinlich (Erfolg, Fehler) anstatt nur (Fehler) –

+0

Ich habe nicht gesucht, aber es sollte ein Erfolg sein Callback zu –

+0

ajaxForm hat sicherlich einen Erfolg Rückruf auch als eine vorSerialize eine, die ich weiß, ich benutze –

-2

Warum nicht JSon verwenden? Sie können Daten aus dem Formular sammeln und eine JSon-Anfrage senden.

+0

es wird JSon zurückgeben - ich rede gerade darüber, wie man das Ereignis tatsächlich anmeldet. Siehe Antwort von @ efalcao für die Art von Code, den ich gesucht habe. Ich möchte diesen Code nur einmal schreiben - entweder ich selbst oder in einem 3rd-Party-Plugin –

0

Haben Sie versucht, einen Handler über $.ajaxError() einrichten?

+0

im Allgemeinen möchte ich den Fehler für die betreffende Komponente. zum Beispiel könnte ich eine 'Frage einreichen' Kontrolle, die auf mehreren Seiten verwendet werden könnte. Wenn es einen Fehler gab, würde ich sagen wollen, dass Ihre Frage zu diesem Zeitpunkt nicht übermittelt werden konnte. aber ich stimme zu ajaxError kann auch nicht weh tun –

3

Nach dieser Seite:.

http://www.malsup.com/jquery/form/#api

„beachten Sie, dass die Optionen Objekt kann auch $ Schnipsel-Methode übergeben Werte zu jQuery verwendet werden, wenn Sie mit den Optionen, die von $ unterstützt vertraut sind .ajax Sie können sie im Options-Objekt verwenden, das an ajaxForm und ajaxSubmit übergeben wird. "

Dazu gehört auch die ‚Fehler‘ Handler param, aber ich kann es nicht zur Arbeit kommen ...

Rich-

1

Dies könnte kein Problem mehr sein, weil ich einen Fehler-Callback nur süchtig Alles gut.

e.g:

$("form#new_asset").ajaxForm({ 
    error: function(a, b, c) { 
    alert('error') 
    } 
}); 
+0

Sorry, es scheint nicht zu funktionieren :( – Barun

0

Gerade getestet und Chris O'Sullivan ist in der Tat richtig, wenn auch im Moment denke ich, dass es nicht dokumentiert ist.

Verwandte Themen