【发布时间】:2018-01-05 17:28:55
【问题描述】:
我有一个 JavaScript 函数:
function post(aAction) {
var form = document.createElement("form");
form.action=aAction;
document.body.appendChild(form);
form.submit();
alert(form.action);
}
(我是一位经验丰富的开发人员,但在 JScript 方面没有太多经验 - 从某个网站上删除了 post() 函数。)
我将此字符串传递给函数:带有查询信息的 URL:
http://testServer:3072/aQuerySite.dll/GetErrors?server=server1:5678
此 URL 从指定服务器返回一个列出错误消息的页面:"server1:5678" - 传递给服务器端查询的参数
server=server1:5678
在网址中。
如果我将该 URL 直接粘贴到浏览器中并发布,则会返回包含适当数据的正确页面,并且浏览器地址会显示发送时的完整 URL。
但是当我将 URL 传递给我的函数时,我返回了一个格式正确但没有记录的页面,并且浏览器地址显示了在 ? 标记之后截断的 URL:http://testServer:3072/aQuerySite.dll/GetErrors?
页面返回显示没有记录,因为 ? 之后的查询参数从未到达服务器进行评估 - 查询运行看起来什么都没有。
alert(form.action) 在我添加用于调试的函数中,显示带有查询参数的正确 URL,我的调试器 (WebStorm) 也是如此,如前所述,如果我直接从浏览器点击 URL,我会得到正确的结果.我只能得出结论,我的 URL 在 form.submit() 调用中被截断。
这发生在 IE、FireFox 和 Chrome 中。我还尝试将? 用于“?” - 结果相同。
为什么会这样?我该如何解决?
【问题讨论】:
-
当你提交表单时,它会将queryString(后面的数据?)替换为自己的数据。
-
如果您只是想打开这个 url,您不必将其附加到表单并提交表单。只需
location = 'url'。 -
@Phiter : 它将用自己的数据替换 queryString(之后的数据?) - 为什么?是个 '?'在这种情况下解释为指形式本身?
-
我会更新我的答案。
标签: javascript token form-submit truncated