我試圖發送帶有井號標籤到服務器的URL後,像
/example.php?var1=tes#t & VAR2 =數值
如果我跟蹤的beforeSend功能的URL我看到網址是唯一
/example.php?var1=tes
並且刪除了哈希標籤和包含標籤之後的所有內容。如果我在使用$ .get()函數之前將hashtag編碼爲%23,則一切正常。
下面是一個示例代碼。
$.ajaxSetup(
{
scriptCharset: "iso-8859-1",
contentType: 'Content-type: text/plain; charset=iso-8859-1',
cache: true,
//zuerst alles encodieren, damit server keine fehler bekommt
beforeSend: function(xhr, data)
{
//wrong url
console.log(data.url);
}
});
//right url
var link = "/example.php?var1=tes#t&var2=value2";
$.get(link).done(function()
{
console.log("done");
})
編輯:
服務器解碼與ISO-8859-1的網址,所以我需要將數據編碼爲iso。我在beforeSend函數中編寫了一個腳本,它自動將url轉換爲iso,但它不能轉換hashtag,因爲data.url變量不包含hashtag。所以我需要在$ .ajaxSetup函數中訪問完整的url(包含hashtag)。
這個問題複製代碼$ .parm()方法使用UTF-8編碼,但我需要iso。 – Lemontree87 2014-09-30 12:52:52
我解決了我的問題。我使用你的答案,並且我在beforeSend方法decodeURIComponent()中編寫了附加內容來解碼UTF-8編碼參數。然後我使用我的腳本將字符串轉換爲iso。一切正常。 – Lemontree87 2014-09-30 13:33:29