jquery ajax forme rappel de succès ne pas être appelé
Je suis en train de télécharger un fichier à l'aide de "AJAX", les données de processus dans le fichier et ensuite de retour à certaines de ces données à l'INTERFACE utilisateur afin que je puisse mettre à jour dynamiquement à l'écran.
J'utilise le JQuery, Ajax Formulaire de Plugin, jquery.form.js trouvé à http://jquery.malsup.com/form/ pour le javascript et l'utilisation de Django sur l'extrémité arrière. Le formulaire est soumis et le traitement en back-end se passe sans problème, mais lors de la réception d'une réponse du serveur, mon navigateur Firefox me demande de télécharger/ouvrir un fichier de type "application/json". Le fichier a le contenu json que j'ai essayé de l'envoyer au navigateur.
Je ne pense pas que ce soit un problème avec la façon dont je suis l'envoi du json que j'ai un modulaire json_wrapper()
fonction que j'utilise dans plusieurs endroits de cette même application.
Voici ce que mon apparence de la forme après Django modèles sont appliqués:
<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>
Vous ne verrez pas de boutons submit, parce que je vais appeler présenter avec un bouton d'autre où et je suis en utilisant ajaxSubmit() de la jquery.form.js plugin.
Ici, c'est le contrôle de code javascript:
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);
}
Comme vous pouvez le voir, j'ai pris de l'désespéré de voir le succès de rappel de la fonction de travail et tout simplement avoir un message d'alerte créé sur la réussite. Cependant, nous n'avons jamais atteindre cet appel. Aussi, le error
fonction n'est pas appelée et le beforeSubmit
fonction est exécutée.
Le fichier que je serai de retour a le contenu suivant:
{"count": 18, "failed": 0, "completed": 18, "success": true, "trasaction_id": "SQEID0.231"}
- Je utiliser la "réussite" ici pour désigner de savoir si ou non le serveur a été en mesure d'exécuter le poste de commande de manière adéquate. Si elle n'a pas le résultat devrait ressembler à quelque chose comme:
{"success": false, "message":"<error_message>"}
Votre temps et votre aide est grandement appréciée. J'ai passé quelques jours maintenant et je serais ravi de passer.
source d'informationauteur Michael Merchant
Vous devez vous connecter pour publier un commentaire.
Au cas où quelqu'un a eu un problème similaire, voici la dernière javascript j'ai fini par utiliser:
Ok je viens de passé des heures avec ce même problème en passant par la js fichier ligne par ligne. C'était de travailler un deuxième et puis, le lendemain, il n'était pas. Mon problème était que j'avais supprimé la cible div pour les résultats. Une fois j'ai mis ça, il a bien fonctionné.
M'est arrivé aussi. Le problème s'est avéré être le serveur n'était pas la conversion de la totalité de l'objet à la bonne JSON. Changement de valeur de retour pour les propriétés dont j'avais besoin:
Vous devez appeler
$('#form-id').ajaxForm();
dans le document de prêt jQuery événement pour que le plugin enregistre tous les gestionnaires d'événements.