2010-11-30 6 views
3

Ich verwende das Jquery Form Plugin, um Formulardaten wie dieses zu übermitteln.Wie behandelt man Daten, die vom .ajaxSubmit() - Aufruf zurückgegeben werden?

$('#AddLocalImageForm').ajaxSubmit({ 
        beforeSubmit: function() { alert('b4'); }, 
        success: function(data) { alert('afa');}, 
        dataType: 'json' 
       }); 


<form id="AddLocalImageForm" action="Service/UploadCustImage.ashx" method="post" enctype="multipart/form-data"> 
     <input type="file" name="CustImage" id="CustImage" /> 
    <br /> 
    <label for="ImageName">Name</label> 
     <input type="text" name="ImageName" id="ImageName"/> 
    <br /> 
    <input type="submit" /> 
</form> 

Die Seite, die ich Daten bin Entsendung ist eine Ashx Seite, die

context.Response.ContentType = "application/json"; 

und gibt Daten mit einem

context.Response.Write(JsonData); 

Ich kann sehen, richtig hat alles gebucht und ich bin immer die Corect Json Data zurück, aber ich werde immer aufgefordert, die Json-Daten von meinem Browser herunterzuladen. Was ich tun möchte, ist in der Lage, die zurückgegebenen Daten im Hintergrund zu nehmen und einige Dom-Elemente zu aktualisieren. Die BeforeSubmit-Funktion wird ausgeführt, die Erfolgsfunktion jedoch nicht. Wenn ich den Code vom Plugin sample Seite kopieren, bekomme ich das gleiche.

Wie kann ich es so machen, dass die zurückgegebenen Daten von der Funktion behandelt werden, anstatt mich zum Download aufzufordern?

Update: Also, wenn ich den Inhaltstyp ändern auf der Ashx Seite, die die gesendeten Daten zu

context.Response.ContentType = "text/html"; 

Ich bin nicht mehr die Datei zum Download aufgefordert, behandelt, aber ich bin immer noch nicht in der Lage das zu handhaben gab Daten zurück, da die Erfolgsfunktion niemals ausgeführt wird. Muss ich ihm sagen, dass es erfolgreich war oder wenn Daten zurückgegeben werden, wird nur Erfolg angenommen?

+2

Warum die down vote? Ich würde mich freuen, es zu versuchen und umzuformulieren, wenn ich nicht klar bin. – etoisarobot

Antwort

2

Die Dateieingabe verursacht massive Probleme mit der AJAX-Übermittlung, da sie nicht über XMLHttpRequest unterstützt wird. Das Formular-Plugin funktioniert zwar, aber das Formular funktioniert etwas anders als gewöhnlich, soweit es Rückgabedaten gibt besorgt.

Lesen Sie die Dokumentation für das Plugin in Bezug auf die file upload issue.

+0

Gute Sachen mit dem Link zum Datei-Upload-Problem. Das Hinzufügen von Textarea-Tags zum zurückgegebenen JSON vom Server ist ein Problem, aber es funktioniert in Not. – Steven

+0

@shambleh: Aye, es ist eine clevere Workaround. – Orbling

3

Um meine eigene Frage in der Hoffnung zu beantworten, dass es jemand anderem irgendwann helfen kann.

So sieht der Grund aus, warum Erfolg nie läuft, weil es nicht glaubt, dass die Anfrage erfolgreich war. Wenn ich

  $('#AddLocalImageForm').ajaxSubmit({ 
        beforeSubmit: function() { alert('b4'); }, 
        success: function() { alert('Run on Success'); }, 
        error: function(request, errordata, errorObject) { alert(errorObject.toString()); }, 
        dataType: 'json' 
       }); 

Mit dem Content des ASHX Set

context.Response.ContentType = "text/html"; 

ändern bekomme ich einen Fehler, dass die ASHX ungültig json zurückkehrt. Also, wenn ich den Datentyp Option Kommentar aus wie

   $('#AddLocalImageForm').ajaxSubmit({ 
        beforeSubmit: function() { alert('b4'); }, 
        success: function() { alert('Run on Success'); }, 
        error: function(request, errordata, errorObject) { alert(errorObject.toString()); } 
        //dataType: 'json' 
       }); 

ich nicht aufgefordert habe, die Datei herunterzuladen und bin in der Lage, die zurück Json zu verarbeiten;

Wheewwwwww !!!

Verwandte Themen