Maison  >  Article  >  interface Web  >  Quelles sont les causes de l’erreur ajax ?

Quelles sont les causes de l’erreur ajax ?

青灯夜游
青灯夜游original
2022-01-19 14:47:1415563parcourir

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.

Quelles sont les causes de l’erreur ajax ?

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

ajax

5. 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 pas

Paramè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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn