J'ai récemment mis mon serveur dev de PHP 5.4 à PHP 5.6 et j'ai une erreur étrange en essayant de le tester. Tout mon code PHP renvoie des données sous forme de tableau ou de chaîne via ma vue principale, qui utilise le code suivant pour renvoyer les données en tant que JSON à toute requête Ajax. (J'ai désactivé le type MIME à des fins de test)Jquery.Ajax ajoute des guillemets et une nouvelle ligne à ma réponse JSON
public static function SendData($data)
{
$response = array(
'status' => true,
'message' => $data
);
//header('Content-type: application/json');
exit(json_encode($response, JSON_HEX_APOS));
}
De que mon code Javascript utilise ces données, normalement parse immédiatement à JSON car le type MIME indique JQuery de le faire et le traiter. Il a fonctionné fin en PHP 5.4, mais depuis que j'ai mis à jour, ma réponse est modifiée par Jquery. En regardant la Reponse du serveur dans Firebug, je vois qu'il est JSON valide (testé avec JSONlint)
{"status":true,"message":"Didier Tartempion|[email protected]|Gestion de commerce"}
Mais quand je vérifie le code Jquery suivant dans Firebug
$.ajax({
url:"Connect.php",
type : 'POST',
data : data,
success:function(result)
{
//JSON processing, for now I debugg with
alert (result);
},
error: function(qXHR, textStatus, errorThrown)
{
alert(textStatus);
}
});
La variable de résultat dans le succès contient en fait ma réponse étrangement formaté, il ressemble à ceci lorsque vous utilisez montre firebug:
"\n{"status":true,"message":"Didier Tartempion|[email protected]|Gestion de commerce"}"
En tant que tel, JQuery ne peut pas analyser cela et JSONlint dit que ce n'est pas valide. Y at-il quelque chose de PHP5.6 de peut-être même le nouveau serveur qui pourrait causer ce comportement étrange?
Merci
vous devez définir le dataType dans votre ajax sinon le résultat retourné serait un texte brut. dataType = 'json' – DinoMyte
Ne devrait pas l'en-tête ('Content-type: application/json'); " fait le travail? De toute façon, j'ai essayé avec les deux et je reçois toujours une erreur d'analyse puisque le JSON JSON n'est pas valide tant que ma réponse est. – GPierre