2010-11-30 7 views
3

J'utilise le plugin Jquery Form pour soumettre des données de formulaires comme celle-ci.Comment gérer les données renvoyées par l'appel .ajaxSubmit()?

$('#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> 

La page Je posterai des données à est une page ashx qui a

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

et renvoie les données avec un

context.Response.Write(JsonData); 

Je peux voir tout est affiché correctement et je reçois le cornet Json Data de retour, mais je suis toujours invité à télécharger les données Json à partir de mon navigateur. Ce que je veux faire, c'est pouvoir prendre les données retournées en arrière-plan et mettre à jour certains éléments Dom. La fonction beforeSubmit s'exécute mais la fonction de réussite ne le fait jamais. Si je copie le code de la page du plugin sample, je reçois la même chose.

Comment puis-je faire en sorte que les données renvoyées soient traitées par la fonction plutôt que de me demander de télécharger?

Mise à jour: Donc, si je change le type de contenu sur la page ashx qui gère les données affichées à

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

Je ne suis plus invité à télécharger le fichier, mais je suis toujours incapable de gérer la renvoyé des données car la fonction de succès ne s'exécute jamais. Ai-je besoin de dire que cela a réussi ou si les données sont retournées, est-ce que cela suppose simplement le succès?

+2

Pourquoi le vote négatif? Je serais heureux d'essayer de reformuler si je ne suis pas clair. – etoisarobot

Répondre

2

L'entrée de fichier cause des problèmes importants avec la soumission AJAX, car elle n'est pas supportée par XMLHttpRequest, le plugin Form a un problème, mais cela signifie que le formulaire fonctionne différemment que d'habitude concerné.

Avoir une lecture de la documentation pour le plugin en ce qui concerne le file upload issue.

+0

De bonnes choses avec le lien vers le problème de téléchargement de fichiers. L'ajout de balises textarea au serveur JSON renvoyé par le serveur est pénible, mais cela le fait fonctionner à la rigueur. – Steven

+0

@shambleh: Aye c'est une solution de contournement intelligente. – Orbling

3

Pour répondre à ma propre question dans l'espoir que cela puisse aider quelqu'un d'autre un jour.

Il semble donc que la raison pour laquelle le succès ne s'exécute jamais est parce qu'il ne croit pas que la requête a réussi. Si je change de

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

Avec le ContentType de l'ensemble de ASHX à

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

je reçois une erreur que le ASHX retourne JSON invalide. Donc, si je commente sur l'option dataType comme

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

Je ne suis pas invité à télécharger le fichier et je suis en mesure de traiter le retour JSON;

Wheeewwwww !!!

Questions connexes