首頁 > web前端 > js教程 > 主體

ajax傳送參數含有特殊字元的快速解決方法

亚连
發布: 2018-05-24 10:29:25
原創
1720 人瀏覽過

下面我就為大家帶來一篇ajax傳送參數含有特殊字元的快速解決方法。希望對大家有幫助。

JQuery AJAX中遇到這樣一個問題,參數中包含特殊字元,比如&'#@等, 這時執行AJAX的時候就會出問題,因為所傳的參數變了.看個範例就明白:

方案一:

$.ajax({
  url: '/ashx/ajax.ashx',
  type: 'post',
  data: 'option=delete&name=11&adb, success: function (data) { if (data != 'error ') { } } }); '
登入後複製

上面執行的ajax就是非同步刪除一個name為11&abd 的資料當請求到ajax.ashx頁面時,我們獲取到的name參數為11 執行操作後會發現其實刪除了name 為11的數據,而沒有刪除name 為11&abc 的數據這是由於有&特殊字符,把以前的兩個參數變成了三個參數option,name,abc 這時就需要用另外一種方法傳遞參數:

$.ajax({
  url: '/ashx/ajax.ashx',
  type: 'post',
  data: {
    'option': 'delete',
    'name': '11&adb'
  },
  success: function(data) {
    if (data != 'error') {}
  }
});
登入後複製

採用上面的json格式傳遞參數就可以避免特殊字元造成的參數錯誤問題.

方案二: 統一編碼UTF-8.

#1.JSP頁面:

<%@ page language=" java" pageEncoding="UTF-8"%>

2.Ajax.js頁面:傳遞參數時,可能出現特殊字元的參數用escape(encodeURIComponent())兩個函數進行轉碼,傳遞到後台!

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.伺服器端接收傳遞的資料例如:一個servlet的doGet方法中: request.setCharacterEncoding("gb2312"); response. setContentType("text/xml;charset=utf-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實現非同步刷新請求

jQuery Ajax方式上傳檔案的方法

以上是ajax傳送參數含有特殊字元的快速解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!