jquery-ajax-Formular Erfolgs-callback nicht aufgerufen

Ich versuche zum hochladen einer Datei mit "AJAX" -, Prozess-Daten in die Datei und kehren Sie dann einige der Daten, die die Benutzeroberfläche, so kann ich dynamisch aktualisieren Sie den Bildschirm.

Bin ich mit dem JQuery-Ajax Form Plugin, jquery.form.js gefunden bei http://jquery.malsup.com/form/ für die javascript-und mit Django auf dem back-end. Das Formular gesendet werden und die Verarbeitung auf back-end wird durch ohne ein problem, aber wenn eine Antwort vom server empfangen wird, mein Firefox-browser fordert mich auf, ihn zu laden/öffnen einer Datei vom Typ "application/json". Die Datei hat die json-Inhalte, die ich versucht habe zu senden an den browser.

Glaube ich nicht, das ist ein Problem, wie schicke ich die json als ich eine modularisierte json_wrapper() - Funktion, die verwende ich an mehreren stellen in der gleichen Anwendung.

Hier ist, was mein Formular sieht nach der Django templates angelegt:

<form method="POST" enctype="multipart/form-data" action="/test_suites/active/upload_results/805/">
  <p>
     <label for="id_resultfile">Upload File:</label> 
     <input type="file" id="id_resultfile" name="resultfile">
  </p>  
</form>

Sehen Sie keine submit-buttons, weil ich Berufung Einreichen, mit einem button, wo sonst und bin mit ajaxSubmit() aus der jquery.form.js plugin.

Hier ist die Kontrolle von javascript-code:

function upload_results($dialog_box){
    $form = $dialog_box.find("form");
    var options = {
            type: "POST",
            success: function(data){
                alert("Hello!!");
            },
            dataType: "json",
            error: function(){
                console.log("errors");

            },
            beforeSubmit: function(formData, jqForm, options){
                    console.log(formData, jqForm, options);
                },
        }
    $form.submit(function(){
        $(this).ajaxSubmit(options);
        return false;
    });
    $form.ajaxSubmit(options);
}

Wie Sie sehen können, habe ich verzweifelt zu sehen, der Erfolgs-callback-Funktion arbeiten und haben Sie einfach eine alert-Nachricht erstellt, auf Erfolg. Wir jedoch nie erreichen, dass die Anruf. Auch die error Funktion nicht aufgerufen und die beforeSubmit Funktion ausgeführt wird.

Die Datei, dass ich zurück komme hat folgenden Inhalt:

{"count": 18, "failed": 0, "completed": 18, "success": true, "trasaction_id": "SQEID0.231"}

Ich 'Erfolg' hier, um zu Kennzeichnen, ob oder nicht der server war in der Lage, führen Sie den post-Befehl ausreichend. Wenn es nicht das Ergebnis würde folgendermaßen Aussehen:

{"success": false, "message":"<error_message>"}

Ihre Zeit und Hilfe wird sehr geschätzt. Ich habe verbrachte ein paar Tage auf das jetzt und würde gerne weitermachen.

Hat die error call ausführen? oder die beforeSubmit? Die überprüfung der tatsächlichen Reaktion in firebug oder chrome würden auch helfen, um zu sehen, was tatsächlich zurückkommt.
Nein, der Fehler Aufruf nicht ausgeführt, aber die beforeSubmit tut. Wir wissen auch alles wunderbar funktioniert, bevor Sie Einreichen, da die server-Seite die Verarbeitung ist einwandfrei.
Was für eine Antwort sind Sie zu sehen im firebug/chrome/fidler net panel?
name="resultfile", mehr...}] [form /test_su...lts/805/] Object { url="/test_suites/aktiv/upload_results/805/", mehr...} Jedes dieser Elemente sind toggleable (ich bin mit Firebug btw) Oh, und für die Klärung, die alle der code oben wurde im wesentlichen von Grund auf neu codiert. Es ist kein Ausschneiden und einfügen, nur für den Fall, dass ein Anliegen war.
Kannst du die komplette Antwort in deiner Frage? Das scheint nicht gültig zu sein JSON, die dazu führen, dass der parser fehlschlägt.

InformationsquelleAutor Michael Merchant | 2010-09-14

Schreibe einen Kommentar