2014-02-26 60 views
1

我正在嘗試發送ajax請求。以下是代碼無法發送帶#參數的Ajax請求

var parameters = '?dbSid='+dbSid+ '&dbPort='+dbPort+ '&dbIpAddress='+dbIpAddress+ '&dbUserName='+dbUserName+ '&dbPassword='+dbPassword; 

new Ajax.Request('../pages/invoke-oracletestAgentCred.jsp'+parameters, {onSuccess:successFunction , onFailure:errorFunction }); 

如果我發送dbPassword爲abcd然後正常工作。

但是,當我發送dbPassword作爲#abc它失敗並將dbPassword設置爲空白。

請幫忙解決問題。

感謝, 綜合外電

+0

看來你正在發送參數爲queryString,所以#字符有特殊的含義。也許你應該用它的url編碼替換那個char。 – Jorgeblom

+0

第二個注意事項...不要通過ajax發送此密碼...您的密碼將很容易被攔截...您只需要一個url嗅探器。 – Tschallacka

回答

3

#字符在URL中的特殊含義(它表示文檔片段的開始)。

確保您編碼了您的URL組件(使用encodeURIComponent)。

1

您是否嘗試過使用encodeUriComponent?

var parameters = '?dbSid='+encodeUriComponent(dbSid)+ '&dbPort='+encodeURIComponent(dbPort)+ '&dbIpAddress='+encodeURIComponent(dbIpAddress)+ '&dbUserName='+encodeURIComponent(dbUserName)+ '&dbPassword='+encodeURIComponent(dbPassword); 

new Ajax.Request('../pages/invoke-oracletestAgentCred.jsp'+parameters, {onSuccess:successFunction , onFailure:errorFunction }); 

一個#傷了你的網址的原因是,#是用來轉到頁面的錨。這就是爲什麼瀏覽器會切斷#的任何網址。

+0

謝謝邁克爾,它的工作原理。 – Anjali