이제 특수문자가 포함된 Ajax 전송 매개변수 문제에 대한 빠른 해결책을 알려드리겠습니다. 그것이 모두에게 도움이 되기를 바랍니다.
JQuery AJAX에서는 이러한 문제가 발생합니다. 매개 변수에 &'#@ 등의 특수 문자가 포함되어 있습니다. 이때 전달된 매개 변수가 변경되었기 때문에 AJAX를 실행하면 문제가 발생합니다. :
Option 1:
$.ajax({ url: '/ashx/ajax.ashx', type: 'post', data: 'option=delete&name=11&adb, success: function (data) { if (data != 'error ') { } } }); '
위에서 실행한 ajax는 ajax.ashx 페이지를 요청하면 11&abd라는 이름의 데이터를 비동기적으로 삭제하는 것입니다. 작업을 실행한 후 얻은 이름 매개변수는 11입니다. , 우리는 그것이 실제로 삭제되었음을 알 수 있습니다. 이는 이전 두 매개변수를 세 개의 매개변수인 name, abc로 바꾸는 & 특수 문자 때문입니다. :
$.ajax({ url: '/ashx/ajax.ashx', type: 'post', data: { 'option': 'delete', 'name': '11&adb' }, success: function(data) { if (data != 'error') {} } });
위의 json 형식을 사용하여 매개변수를 전달하면 특수 문자로 인한 매개변수 오류를 방지할 수 있습니다.
옵션 2: 균일 인코딩 UTF-8.
1.JSP 페이지 :
<%@ page 언어="java" pageEncoding="UTF-8"%>
2.Ajax.js 페이지: 매개변수를 전달할 때 특수 문자가 포함된 매개변수는 escape(encodeURIComponent()를 사용하여 트랜스코딩될 수 있습니다. ) 기능을 수행하고 Backstage로 전달되었습니다!
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. 서버는 전달된 데이터를 받습니다. 예: 서블릿의 doGet 메소드에서: request.setCharacterEncoding("gb2312"); 8") ; response.setHeader("Cache-Control", "no-cache"); ... //다음은 Ajax에서 url로 전달된 매개변수 값에 특수 문자가 포함되어 있고 백엔드 파싱이 발생하는 문제를 해결합니다. 오류 발생: utf- 8 방식으로 java.net.URLDecoder 디코드를 사용하십시오. urlDecoder=new java.net.URLDecoder(); String otherMemo = urlDecoder.decode(request.getParameter("otherMemo"),"utf-8"); logger.info("otherMemo: " + otherMemo);
위 내용은 제가 모두를 위해 정리한 내용입니다. 앞으로 모든 사람에게 도움이 되기를 바랍니다.
관련 기사:
Ajax 요청용 FormData를 사용하여 Ajax를 통해 파일 업로드
위 내용은 특수 문자가 포함된 Ajax 전송 매개변수에 대한 빠른 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!