2014-02-26 30 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