Maison > Article > interface Web > Quelles sont les causes de l’erreur ajax ?
Causes de l'erreur ajax : 1. Mauvais type de données ; 2. Mauvais format json ; 3. Il y a un problème avec les paramètres synchrones et asynchrones de la requête asynchrone ; 4. La valeur du paramètre de données n'est pas définie ; un problème avec le format d'encodage des paramètres passés ; 6. URL Il y a des caractères chinois, etc. dans le chemin.
L'environnement d'exploitation de ce tutoriel : système windows7, version jquery1.10.2, ordinateur Dell G3.
Un code ajax jquery standard :
$.ajax({ type: 'POST', url: 'getSecondClassification', data: {"sort2": sort2,"sort3":sort3)}, dataType: 'json', //contentType:"utf-8",发送请求的编码方式 //contentType都是默认的值:application/x-www-form-urlencoded contentType: 'application/json', data: JSON.stringify({a: [{b:1, a:1}]}) success: function (sort) { $("#noneSelect").remove(); var optionstring = ""; for (var i in sort) { optionstring += "<option value=\"" + sort[i].classId + "\" >" + sort[i].className + "</option>"; } $("#secondtype").html(optionstring); $("#build").removeAttr("disabled"); }, error: function (XMLHttpRequest, textStatus, errorThrown) { // $("#p_test").innerHTML = "there is something wrong!"; // alert(XMLHttpRequest.status); // alert(XMLHttpRequest.readyState); // alert(textStatus); } });
Toute erreur passera à la fonction d'erreur
Exemples de raisons d'erreur :
1. Le type dataType n'est pas cohérent avec ce qui est écrit dans le frontend, une erreur passera à Erreur de format : jquery1.4 a des exigences de format très strictes pour json, et les erreurs de format json passeront également à l'erreur {"test":1}. Faites attention au format
Parfois, lorsqu'il n'est pas nécessaire de renvoyer une valeur, le format du modèle est utilisé et le paramètre dataType : "json" est défini. A ce moment, lorsque la valeur ajax est transférée correctement, une situation particulière. se produit lorsqu'une erreur est signalée dans l'état de réussite du retour 200.
2. Synchronisation des requêtes asynchrones et problèmes asynchrones
Async est par défaut true (requête asynchrone) après l'exécution d'un Ajax, vous devez définir async=false Par exemple, vous utilisez post request Passez la valeur en arrière-plan d'une autre page, mais votre ajax a déjà été exécuté dès le chargement de la page. La réception de la valeur n'est effectuée qu'en arrière-plan. À ce stade, les données ne peuvent pas être demandées, donc. vous pouvez envisager de changer la requête ajax en try synchrone.
3. Les données doivent être écrites
Si les données sont vides, vous devez passer "{}" sinon, les données renvoyées seront au format XML. Et invite parsererror.data :"{}" L'exception de parsererror est également liée au type d'en-tête. et encoding header('Content-type: text/html;
charset=utf8
');4 Les paramètres transmis doivent être le format d'encodage pris en charge par
ajax5. Le chemin ne peut pas contenir de caractères chinois
Utilisez l'erreur pour déboguer le message d'erreur :
Vous pouvez l'alerter pour voir ce qui ne va pasParamètres spécifiques :
XMLHttpRequest:XMLHttpRequest.readyState: 状态码的意思 0 - (未初始化)还没有调用send()方法 1 - (载入)已调用send()方法,正在发送请求 2 - (载入完成)send()方法执行完成,已经接收到全部响应内容 3 - (交互)正在解析响应内容 4 - (完成)响应内容解析完成,可以在客户端调用了XMLHttpRequest: XMLHttpRequest.status:textStatus : Raison de l'erreur errorThrown : (Facultatif) Objet d'erreur capturé[Recommandation de didacticiel connexe :
Tutoriel vidéo AJAX
]Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!