ここで、特殊文字を含む Ajax 送信パラメータの問題に対する簡単な解決策を紹介します。お役に立てれば幸いです。
JQuery AJAX では、パラメーターに &'#@ などの特殊文字が含まれています。このとき、渡されるパラメーターが変更されているため、AJAX の実行時に問題が発生します。 :
オプション 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 という名前のデータを非同期的に削除します。操作の実行後、取得した name パラメーターは 11 です。名前 11 のデータは削除されていないことがわかります。これは、前の 2 つのパラメータを 3 つのパラメータ オプション、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 language="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("text/xml;charset=utf-)" 8") ; response.setHeader("Cache-Control", "no-cache"); ... //以下は、Ajax の URL によって渡されるパラメータ値に特殊文字が含まれている問題とバックエンド解析の問題を解決します。エラーが発生します: utf-8 を使用します。 urlDecoder=new java.net.URLDecoder(); String otherMemo = urlDecoder.decode(request.getParameter("otherMemo"),"utf-8"); の方法で java.net.URLDecoder をデコードします。 logger.info("otherMemo: " + otherMemo);
上記は皆さんのためにまとめたもので、今後皆さんのお役に立てれば幸いです。
関連記事:
AjaxリクエストにFormDataを使用してAjax経由でファイルをアップロードする
以上が特殊文字を含む Ajax 送信パラメータに対する迅速な解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。