Je vais maintenant vous apporter une solution rapide au problème des paramètres de transmission ajax contenant des caractères spéciaux. J'espère que cela aide tout le monde.
JQuery AJAX rencontre un tel problème. Les paramètres contiennent des caractères spéciaux, tels que &'#@, etc. À ce stade, des problèmes surviendront lors de l'exécution d'AJAX car les paramètres passés ont changé. exemple Comprenez simplement :
Option 1 :
$.ajax({ url: '/ashx/ajax.ashx', type: 'post', data: 'option=delete&name=11&adb, success: function (data) { if (data != 'error ') { } } }); '
L'ajax exécuté ci-dessus consiste à supprimer de manière asynchrone une donnée nommée 11&abd. Lors de la demande de la page ajax.ashx, le paramètre de nom que nous avons obtenu est 11. Après avoir exécuté l'opération, nous constaterons que les données portant le nom 11 sont effectivement supprimées, mais les données portant le nom 11&abc ne sont pas supprimées. & caractère spécial, qui remplace les deux précédents Le paramètre devient trois paramètres option, nom, abc À ce stade, vous devez utiliser une autre méthode pour transmettre les paramètres :
$.ajax({ url: '/ashx/ajax.ashx', type: 'post', data: { 'option': 'delete', 'name': '11&adb' }, success: function(data) { if (data != 'error') {} } });
.
L'utilisation des paramètres json ci-dessus dans le format peut éviter les erreurs de paramètres causées par des caractères spéciaux.
Option 2 : codage uniforme UTF-8.
1 page JSP :
<%@ page language="java" pageEncoding="UTF-8"%>
2.Page Ajax.js : lors du passage de paramètres, les paramètres avec des caractères spéciaux peuvent être convertis en utilisant la fonction escape(encodeURIComponent()) Code, passé en arrière-plan !
var url = "/ZX/servlet/AddMemoServlet memo=" + memoCode + "&otherMemo=" + escape(encodeURIComponent(otherMemo)) + "&applNo=" + applNo.innerText.substr(0, 16); //alert("url="+url); xmlHttp.open("POST", url, true); xmlHttp.onreadystatechange = doMemo; xmlHttp.send(null);
3. Le serveur reçoit les données transmises Par exemple : dans la méthode doGet d'une servlet : request.setCharacterEncoding("gb2312. "); réponse.setContentType("text/xml;charset=utf-8"); réponse.setHeader("Cache-Control", "no-cache"); ...... //Ce qui suit résout les paramètres transmis par url en Ajax La valeur contient des caractères spéciaux et l'erreur d'analyse back-end se produit : décodage de java.net.URLDecoder au format utf-8 urlDecoder=new java.net.URLDecoder(); String otherMemo = urlDecoder.decode(request. getParameter("otherMemo" ),"utf-8"); logger.info("otherMemo:" + otherMemo);
Ce qui précède est ce que j'ai compilé pour tout le monde, j'espère qu'il sera utile à tout le monde. l'avenir.
Articles connexes :
Téléchargez des fichiers via Ajax et utilisez FormData pour effectuer des requêtes Ajax
Utilisez ajax pour implémenter l'actualisation asynchrone requêtes
Comment télécharger des fichiers à l'aide de jQuery 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!