Ajax .done () ne fonctionne pas ensemble pour moi

J’ai une situation très étrange. J’ai une fonction AJAX qui envoie des données de formulaire à un contrôleur php codeigniter, sur la réponse JSON, il doit traiter la réponse. La première partie fonctionne, mais la dernière, une fonction .done (), ne fonctionne pas, peu importe ce que j’essaie. voici mon script:

var validator = $('#register-company-form').validate({ rules: { title: { required: true, valueNotEquals: 0 }, /* rules here */ }, highlight: function (element) { $(element).closest('.form-field').addClass('error-field'); }, unhighlight: function (element){ $(element).closest('.form-field').removeClass('error-field'); }, errorPlacement: function(error, element) {}, submitHandler: function(form) { var formData = new FormData($(form)[0]); $.ajax({ type: $(form).attr('method'), url: $(form).attr('action'), data: formData, dataType: 'json', cache: false, contentType: false, processData: false }) .done(function (response) { $(".form-field").removeClass("error-field"); $(".item-exists").hide(); if(response.Response == 401) { $("#company_email").closest('.form-field').addClass('error-field'); $("#company_email").closest(".form-field").find(".item-exists").show(); } else if(response.Response == 402) { $("#personal_email").closest('.form-field').addClass('error-field'); $("#personal_email").closest(".form-field").find(".item-exists").show(); } else if(response.Response == 403) { $("#user_name").closest('.form-field').addClass('error-field'); $("#user_name").closest(".form-field").find(".item-exists").show(); } else if(response.Response == 200){ /* load my view */ } }); return false; } }); 

Mon script PHP renvoie la réponse JSON suivante:

{“Réponse”: 200, “Données”: null, “Message”: null}

Après avoir obtenu cette réponse, ma fonction .done () est supposée agir en conséquence et charger une page, ce qui n’est pas le cas. J’ai essayé de mettre console.log () et alert (), mais maintenant, il est clair qu’il ne répond pas. Y a-t-il une autre façon de faire ceci ou une correction dans le code? Veuillez noter que le même code a vraiment fonctionné correctement sur un autre serveur. Cela s’est produit après la migration.

Merci beaucoup pour l’aide!

Merci beaucoup pour vos gentilles informations @DFreind et @JonathanLonowski , avec vos conseils, j’ai finalement résolu ce problème qui m’a pris presque 3 jours. En fait, quand j’ai regardé attentivement le code HTML produit par PHP, il a dit: 1 {“Response”: 200, “Data”: null, “Message”: null}

Ce ‘1’ avant la génération de la chaîne JSON ne peut pas modifier l’erreur d’en-tête! Après beaucoup d’efforts, je viens de voir un «1» plaine juste avant d’ouvrir la sur la première ligne de ma manette. Enlever ce '1' a fonctionné comme un charme, toutes les erreurs ont disparu, la vie a été sauvée, le dosage au paradis maintenant :-)

Indication pour les chercheurs: Installez Firebug si vous faites face à des erreurs similaires et examinez toujours les en-têtes de réponse. Essayez d’essayer. La plupart du temps, les erreurs PHP nuisent à votre sortie. Dans mon cas, l'erreur 'en-têtes déjà envoyés' était générée car avant que PHP ne génère sa sortie, le HTML était entré. Surveillez également les fonctions echo () ou set_cookie ()!

Merci à tous les geeks de StackOverflowish :)