form.submit() 用 '?' 截断字符串
form.submit() truncating string with '?'
我有一个JavaScript函数:
function post(aAction) {
var form = document.createElement("form");
form.action=aAction;
document.body.appendChild(form);
form.submit();
alert(form.action);
}
(我是一名经验丰富的开发人员,但对 JScript 的经验不多 - 从某些网站上提升了 post()
功能。)
我将此字符串传递给函数:A URL 以及查询信息:
http://testServer:3072/aQuerySite.dll/GetErrors?server=server1:5678
此 URL returns 页面列出来自指定服务器的错误消息:"server1:5678"
- 作为
[=22= 传递给服务器端查询的参数]
server=server1:5678
在URL.
如果我将 URL 直接粘贴到浏览器中并 post 它,将返回具有适当数据的正确页面,并且浏览器地址显示完整的 URL已发送。
但是当我将 URL 传递到我的函数中时,我得到了一个格式正确的页面但没有记录,并且浏览器地址显示 URL 在 [ 之后被截断了=15=] token :
http://testServer:3072/aQuerySite.dll/GetErrors?
页面returns 未显示任何记录,因为 ?
之后的查询参数从未到达服务器进行评估 - 查询运行时没有查找任何内容。
我为调试添加的函数中的 alert(form.action)
显示正确的 URL 和查询参数,我的调试器 (WebStorm) 也是如此,并且如前所述,如果我点击 URL 直接从浏览器,我得到了正确的结果。我只能得出结论,我的 URL 在 form.submit()
调用中被截断了。
这发生在 IE、FireFox 和 Chrome 中。我还尝试使用 ?
作为“?” - 结果相同。
为什么会这样?我该如何解决?
您似乎在尝试使用新创建的表单通过提交重定向用户。
这不是必需的,因为您可以使用以下命令简单地重定向用户:
window.location = 'your_url';
在你的例子中,你说查询字符串被替换为一个简单的 ?
。
那是因为您创建了一个表单,并且此表单使用 GET post 其数据。
因此,如果表单操作是 https://www.whosebug.com
,查询字符串将添加一个询问,后跟 key/value 对。
假设您有一个表单,其中包含两个名为 a 和 b 的输入,当您提交它们时,查询字符串如下所示:
https://www.whosebug.com?a=zzz&b=zzz
如果您只是将此 url 放入您的表单操作中,它会在您提交时用自己的数据替换查询字符串。由于您的表单没有命名输入,查询字符串将为空,这就是为什么您在 url.
之后有一个空的 ?
我有一个JavaScript函数:
function post(aAction) {
var form = document.createElement("form");
form.action=aAction;
document.body.appendChild(form);
form.submit();
alert(form.action);
}
(我是一名经验丰富的开发人员,但对 JScript 的经验不多 - 从某些网站上提升了 post()
功能。)
我将此字符串传递给函数:A URL 以及查询信息:
http://testServer:3072/aQuerySite.dll/GetErrors?server=server1:5678
此 URL returns 页面列出来自指定服务器的错误消息:"server1:5678"
- 作为
[=22= 传递给服务器端查询的参数]
server=server1:5678
在URL.
如果我将 URL 直接粘贴到浏览器中并 post 它,将返回具有适当数据的正确页面,并且浏览器地址显示完整的 URL已发送。
但是当我将 URL 传递到我的函数中时,我得到了一个格式正确的页面但没有记录,并且浏览器地址显示 URL 在 [ 之后被截断了=15=] token :
http://testServer:3072/aQuerySite.dll/GetErrors?
页面returns 未显示任何记录,因为 ?
之后的查询参数从未到达服务器进行评估 - 查询运行时没有查找任何内容。
alert(form.action)
显示正确的 URL 和查询参数,我的调试器 (WebStorm) 也是如此,并且如前所述,如果我点击 URL 直接从浏览器,我得到了正确的结果。我只能得出结论,我的 URL 在 form.submit()
调用中被截断了。
这发生在 IE、FireFox 和 Chrome 中。我还尝试使用 ?
作为“?” - 结果相同。
为什么会这样?我该如何解决?
您似乎在尝试使用新创建的表单通过提交重定向用户。
这不是必需的,因为您可以使用以下命令简单地重定向用户:
window.location = 'your_url';
在你的例子中,你说查询字符串被替换为一个简单的 ?
。
那是因为您创建了一个表单,并且此表单使用 GET post 其数据。
因此,如果表单操作是 https://www.whosebug.com
,查询字符串将添加一个询问,后跟 key/value 对。
假设您有一个表单,其中包含两个名为 a 和 b 的输入,当您提交它们时,查询字符串如下所示:
https://www.whosebug.com?a=zzz&b=zzz
如果您只是将此 url 放入您的表单操作中,它会在您提交时用自己的数据替换查询字符串。由于您的表单没有命名输入,查询字符串将为空,这就是为什么您在 url.
之后有一个空的?