2012-08-22 34 views
1

當我請求包含#號的jquery Ajax的url時,#後面的url字符串被截斷。例如:當它包含#在jQuery ajax請求時的URL打破

http://somesitem.com/?name=Some#thing 

當我看到被要求在Firebug這個網址,我看到所有正在提交是:

http://somesitem.com/?name=Some 

我試圖用encodeURI函數沒有成功。

有關如何提交包含#的整個字符串的任何提示?

回答

0

這可能是因爲#這個字符有特殊的含義。它基本上是一個保留字符。我可能只是建議你使用一個不同的角色來爲你使用它。

2

encodeURI不刪除「#」。你需要使用encodeURIComponent方法

encodeURIComponent('Some#thing') 

這應該產生這樣的:

Some%23thing 
1

嘗試用 '%23' 代替 '#'。 。

+0

沒有其他解決方案的工作。這工作。謝謝。 – avijendr

0

片段標識符永遠不會傳遞給服務器。如果你想將它發送到服務器,你需要首先將現有片段轉換爲標準的url參數。

var url = window.location; 
//url = http://somesitem.com/?name=Some 
url += '&hash='+window.location.hash; 
//url = http://somesitem.com/?name=Some&hash=thing 
$.get(url); 

的片段標識符的功能比 URI的其餘部分是不同的:即,其處理是排他的客戶端,沒有從服務器 參與 - 當然的服務器通常有助於 確定MIME類型和MIME類型決定了片段的處理。 當代理(如Web瀏覽器) 向Web服務器請求資源時,代理將URI發送到 服務器,但不發送片段。相反,代理等待 服務器發送的資源,然後,代理處理 資源根據文檔類型和片段值

http://en.wikipedia.org/wiki/Fragment_identifier