【问题标题】:not able to send Ajax request with # in parameters无法发送带有 # 参数的 Ajax 请求
【发布时间】:2014-02-26 14:12:21
【问题描述】:

我正在尝试发送 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 设置为空白。

请帮忙解决问题。

谢谢, 安贾利

【问题讨论】:

  • 您似乎将参数作为 queryString 发送,因此 # 字符具有特殊含义。也许你应该用它的 url 编码替换那个 char。
  • 第二个注意...不要通过ajax发送...您的密码很容易被拦截...您只需要一个url嗅探器。

标签: javascript ajax jsp


【解决方案1】:

# 字符在 URL 中具有特殊含义(它表示文档片段的开始)。

确保对 URL 组件进行编码(使用 encodeURIComponent)。

【讨论】:

    【解决方案2】:

    您是否尝试过使用 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 });
    

    # 破坏你的 url 的原因是 # 用于转到页面中的锚点。这就是为什么浏览器会在 # 处截断任何 url。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-01
      • 1970-01-01
      • 2014-11-14
      • 1970-01-01
      • 1970-01-01
      • 2016-02-22
      • 1970-01-01
      • 2018-04-13
      相关资源
      最近更新 更多