javascript - form.submit() 用 '?' chop 字符串

标签 javascript token form-submit truncated

我有一个 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 传递到函数中时,我返回了格式正确的页面,但没有记录,并且浏览器地址显示在 ? 标记后 chop 的 URL :

http://testServer:3072/aQuerySite.dll/GetErrors?

页面返回显示没有记录,因为 ? 之后的查询参数从未到达服务器进行评估 - 查询运行时什么也不找。

我为调试而添加的函数中的

alert(form.action) 会显示带有查询参数的正确 URL,就像我的调试器 (WebStorm) 一样,并且如上所述,如果我点击 URL直接从浏览器,我得到了正确的结果。我只能得出结论,我的 URL 在 form.submit() 调用中被 chop 。

这种情况发生在 IE、FireFox 和 Chrome 中。我还尝试使用 ? 表示“?” - 相同的结果。

<小时/>

为什么会发生这种情况?我该如何修复它?

最佳答案

您似乎正在尝试使用新创建的表单通过其提交来重定向用户。

这不是必需的,因为您可以简单地使用以下命令重定向用户:

window.location = 'your_url';

在您的例子中,您说查询字符串被替换为简单的 ?

这是因为您创建了一个表单,并且该表单使用 GET 来发布其数据。

因此,如果表单操作是 https://www.stackoverflow.com,查询字符串将添加一个询问,后跟键/值对。

假设您有一个包含两个名为 a 和 b 的输入的表单,当您提交它们时,查询字符串将如下所示:

https://www.stackoverflow.com?a=zzz&b=zzz

如果您只是将此网址放入表单操作中,那么当您提交查询字符​​串时,它会用自己的数据替换查询字符串。由于您的表单没有命名输入,因此查询字符串将为空,这就是为什么网址后面有一个空的 ?

关于javascript - form.submit() 用 '?' chop 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48118474/

相关文章:

jQuery Ajax 表单仅在单击两次后提交

javascript - 使用 JQuery 动态生成的表中的行数

javascript - 如何在 javascript 函数中嵌入 xslt?

javascript - 为什么在尝试使用 ajax 访问页面时出现 Access-Control-Allow-Origin 错误?

node.js - Firebase 3.0 token : [Error: Invalid claim 'kid' in auth header.]

c++ - 正则表达式的歧义可识别标记

javascript - 在 for 循环 jquery 中使用 one()

ionic-framework - Ionic + Jhipster oauth2 错误无访问控制

javascript - 将带有 <button type ="submit"> 的表单提交到同一页面

php - 如何在wordpress插件中将表单提交到另一个页面