Maison >développement back-end >tutoriel php >Requête AJAX, résolvant le problème des requêtes Get invalides
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!