Maison >développement back-end >tutoriel php >Requête AJAX, résolvant le problème des requêtes Get invalides

Requête AJAX, résolvant le problème des requêtes Get invalides

小云云
小云云original
2018-01-08 13:40:032740parcourir

Cet article présente principalement WeChat pour revenir à la page précédente, la requête AJAX dans la page, l'analyse et la solution du problème de demande Get invalide, les amis dans le besoin peuvent s'y référer, j'espère que cela pourra aider tout le monde.

Permettez-moi d'abord d'analyser la cause du problème

Récemment, alors que je travaillais sur un projet WeChat, j'ai rencontré une situation très courante La demande est comme celle-ci Lorsque l'utilisateur entre ". Mon Centre Personnel", il y aura un bouton sur lequel cliquer pour accéder au remplissage des informations de certification. Après avoir cliqué sur ce bouton, il passera à la page de remplissage des informations de certification, remplira les informations et les soumettra avec succès. Lorsque l'utilisateur revient directement à la page précédente. Le statut d'authentification doit être modifié en « Authentification ». À ce stade, vous devez utiliser une méthode AJAX pour interroger l'état d'authentification et modifier l'affichage de l'état sur la page.

A cette époque, la méthode ajax n'était pas écrite selon la méthode standard. La méthode par défaut était Get request. Le code JS front-end est le suivant :

window.onload = function(){
  var isProfesser=$('#isProfesser').val();
  var isreview=$('#isreview').val();
  var userid=$('#myId').val();
  if(isProfesser=='0' && isreview=='0'){
   $.ajax({
     url:"/isAuthenticing",
     data: {userid:userid},
     success: function (data, textStatus, jqXHR) {
      if(data.result=='1'){
        $('#approveadd a').html("+认证中")
      }
     },
     error: function () {
     }
   });
  }
  //getMyQusetionInfo();
}

L'arrière-plan. le contrôleur a également reçu GET par défaut

@RequestMapping(value = "/isAuthenticing", method = RequestMethod.GET)
@ResponseBody
public Map<String, Object> isAuthenticing(@RequestParam("userid") String userid,HttpServletRequest request) throws IOException {
//方法体;
}

Solution

La pratique a prouvé que l'utilisation de la méthode Get n'est pas possible. Chaque fois que vous revenez à la page précédente, la méthode ajax dans la page le fera. être exécuté comme d'habitude, mais le contrôleur d'arrière-plan ne sera pas demandé. La valeur renvoyée par la requête est également la valeur du dernier chargement de la page. La raison spécifique n'est pas claire pour moi pour le moment.

Plus tard, avec la mentalité de faire un essai, j'ai utilisé la requête POST. Étonnamment, en utilisant la requête POST, l'ensemble du processus s'est déroulé sans problème.

Le code JS front-end est le suivant :

window.onload = function(){
  var isProfesser=$('#isProfesser').val();
  var isreview=$('#isreview').val();
  var userid=$('#myId').val();
  if(isProfesser=='0' && isreview=='0'){
   $.ajax({
     url:"/isAuthenticing",
     data: {userid:userid},     type: 'POST',     success: function (data, textStatus, jqXHR) {
      if(data.result=='1'){
        $('#approveadd a').html("+认证中")
      }
     },
     error: function () {
     }
   });
  }
  //getMyQusetionInfo();
}

Code back-end :

@RequestMapping(value = "/isAuthenticing", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> isAuthenticing(@RequestParam("userid") String userid,HttpServletRequest request) throws IOException {
//方法体
}

J'espère que cela pourra aider ceux qui rencontrent le même problème que moi.

Remarque : la partie rouge est la partie modifiée

Recommandations associées :

Exemple de partage d'écriture de la fonction de requête Ajax en JS natif

Problèmes avec les symboles spéciaux dans les demandes d'obtention

Description détaillée de la demande de réseau d'applet WeChat (demande GET)

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