【问题标题】:Submit to external form with "action:javascript" using javascript使用 javascript 提交到带有“action:javascript”的外部表单
【发布时间】:2015-11-30 20:48:03
【问题描述】:

我在一个页面 (one.html) 上有一个表单,它有一个 javascript 函数作为其提交操作:

<form id="the_form" action="javascript:myfunc('input_text');" method="post">
    <input type="text" id="input_text" name="input_text">
    <input type="submit">
</form>

我有另一个页面(two.html),带有一个按钮,当我点击该按钮时,我想在 one.html 上提交表单,以及 input_text 的值。这对ajax或任何其他方式是否可行?如果可能的话,我也想重定向到我提交表单的页面,尽管这是可选的。

【问题讨论】:

  • 这两个是在同一个页面上吗?例如,在 iframe 中?
  • 不,它们是不同的页面。
  • 你能告诉我们两个不同页面上的所有代码吗?
  • two.html 如何从 one.html 提交一个在 two.html 上为空的表单?
  • @towerofnix 他们都是 JS 的 1000 行,所以我真的不能。两个页面都可以正常工作,我只是想连接它们。

标签: javascript jquery


【解决方案1】:

此代码应为第二种形式:

$(document).ready(function(){
var QueryString = function () {
    // This function is anonymous, is executed immediately and
    // the return value is assigned to QueryString!
    var query_string = {};
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    for (var i=0;i<vars.length;i++) {
        var pair = vars[i].split("=");
        // If first entry with this name
        if (typeof query_string[pair[0]] === "undefined") {
            query_string[pair[0]] = decodeURIComponent(pair[1]);
            // If second entry with this name
        } else if (typeof query_string[pair[0]] === "string") {
            var arr = [ query_string[pair[0]],decodeURIComponent(pair[1]) ];
            query_string[pair[0]] = arr;
            // If third or later entry with this name
        } else {
            query_string[pair[0]].push(decodeURIComponent(pair[1]));
        }
    }
    return query_string;
}();

if(QueryString.preview){
    console.log(QueryString.preview);
}

});

此示例读取查询并解析。

所以,首先您可以将表单作为 GET 发送,例如 http://asd.com/?param1=a&param2=b 然后在您的另一个页面中使用 QueryString.param1 和 QueryString.param2。

【讨论】:

  • 完美!效果很好。我曾希望有一个简单的答案。
【解决方案2】:

根据这篇文章下的评论,我假设您想将信息从 pageA 发送到返回结果文件的 php 文件:

根据您问题下的 cmets,我假设您想使用 javascript 从 pageA 发布到新页面 (pageB)。

快速回答:不可能(以用户友好的方式)
更有用的回答
它需要更多的工作,但根据给出的信息,这可能有效:

  • 通过 GET 或 POST 从 pageA 提交表单到 pageB
  • 创建隐藏字段 (&lt;input type="hidden"/&gt;) 并使用相应的 GET 或 POST 值填充这些字段。使用 PHP 这样的服务器端语言可能会更容易,但在 JS 中并非不可能
  • 设置隐藏输入并将其命名为&lt;input type="hidden" id="linkedSubmit" value="1" /&gt;
  • 创建一些javascript看是否$('#linkedSubmit').val()==1,如果是则继续在pageB提交表单

这不是最漂亮的解决方案,并且在连接速度较慢的情况下,用户会看到页面跳转。而且因为它是 javascript 它是客户端,因此用户可以手动将值更改为 1 并欺骗您的页面。这不应成为安全问题。

【讨论】:

  • 谢谢 Martijn。看到你的回答,我越来越觉得这个设置让事情复杂化了。本质上,pageA 会生成一个文件(服务器端),我想将其传递给 pageB(纯粹在客户端运行),而无需用户下载它。我需要做的就是将文件名从 pageA 传递到 pageB 并让 B 检索文件,加载并显示它。或者,如果用户在本地已经有他们需要的文件,他们可以直接将其指定给 B 而不需要 A。这看起来很简单,但我似乎想不出一个简单的解决方案来支持这一点。
猜你喜欢
  • 2018-07-24
  • 2012-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多