1. 程式人生 > >ajax請求中傳遞的引數中如果含有特殊字元怎麼處理?

ajax請求中傳遞的引數中如果含有特殊字元怎麼處理?

在JQUERY AJAX開發中遇到了下面的一個問題,在執行AJAX請求的時候,需要傳遞一個“50%”的引數,而這個引數中含有特殊字元%。這樣的話就會出現問題了,我們知道伺服器在傳送請求的時候,會將url中的引數轉化成類似於“%2C%2F%3F%3A%40%26%3D%2B%24%23”,所以在我們執行含有這樣特殊字元的ajax請求的時候就會出現錯誤,因為我們傳遞的引數可能發生了變化,也可能由於引數本身中就含有特殊字元所以系統沒有辦法編譯它。

可能會丟擲這樣的一個異常:

警告: Parameters: Character decoding failed. Parameter skipped.

解決的辦法:

1、改變傳遞引數的形式:

例如:

var testUrl ="param1="+cond1+"&params2="+cond2 ;
$.ajax({
    type:"POST",
    url:"testUrl",
    data:allParams,
    success:function(data){

    }
});

在上面這段程式碼中

如果cond2 = “50%”,那麼這個引數中就有了%特殊字元,這樣執行的話可定時會有問題。怎麼修改呢?

我們說過了改變傳遞引數的形式

修改data部分,以json格式的資料傳遞,這樣就可以避免由於特殊字元引起的錯誤引數問題:

data:{‘param1’:cond1,’param2’:cond2}

2、還是按照例子1中的傳遞方式傳遞引數,只不過為了達到我們的目的,我們對要傳遞的引數進行編碼。

例如,如果還是例子1,我們把testUrl修改成下面這種寫法,使用encodeURIComponent(urlString)函式對url中傳遞的引數做編碼操作就可以了:

var testUrl ="param1="+cond1+"&params2="+encodeURIComponent(cond2);

關於encodeURIComponent()函式的參考資料