【问题标题】:How do I submit a form from another page?如何从另一个页面提交表单?
【发布时间】:2010-04-22 04:36:37
【问题描述】:

我有一个两页的网站。 每个页面都包含一个顶部带有“标签”的标题,用于在页面 1 和页面 2 之间导航。

当一个标签被选中时,我需要将选中的页面重新发布到服务器,以便在显示之前快速刷新。

我在每个页面上都有一个表单,允许从该页面手动刷新,但需要从另一个页面提交该表单。

例如,显示第 2 页。选择了第 1 页的选项卡(位于第 2 页),然后它应该在第 1 页提交刷新表单。

感谢任何帮助。

(使用 jQuery、js、html 和 CSS)

【问题讨论】:

    标签: javascript jquery html forms


    【解决方案1】:

    理想情况下,刷新应该在页面加载时由服务器完成。如果这不是一个选项,我会在同步模式下使用 jQuery 的 $.ajax 方法,攻击标签的点击事件:

    $('a.tab').click(function() {
        $.ajax({
            url: "/refresh",
            method: "post",
            async: false,
            data: { refresh: "very yes" }
        });
    });
    

    将 async 设置为 false 可确保在单击处理程序返回和新页面开始加载之前完成请求。您需要将要提交的表单数据包含在data 对象中,在另一个页面上发布表单是不可行的。

    这实际上与 Google Analytics 用于跟踪出站链接点击的方法几乎相同。

    【讨论】:

    • 只知道AJAX的概念。这个 jQuery ajax 帖子可靠吗?服务器看到这是否与表单中的 POST 完全相同?
    • 可靠吗?绝对地。它应该在功能上等同于提交表单,只要您将所有输入名称和值与 data 对象中的键和值匹配即可。
    • 太好了,它已经到位并且运行良好。谢谢你。一个附带问题,我试图在此函数的开头将光标更改为“等待”,然后在成功函数中将其改回。但是,光标仅在 POST 后变为“等待”。任何想法?再次感谢 ajax POST。
    • 此代码有效,因为它阻止调用$.ajax。在请求完成之前,浏览器不会导航到新页面,但它也不会做任何其他事情——包括更改光标。对$.ajaxasync 未设置为 false)的正常异步调用不会阻塞,因此虽然您可以更改光标,但要使页面表现良好(即不'不要让用户在 POST 运行时再次点击其他链接或相同的链接)。
    【解决方案2】:

    您实际上是如何从标签加载页面的?使用某种 iframe?还是通过 AJAX 调用?使用帧可能比使用 AJAX 调用更棘手。

    如果你的表单有一个 id 或一个类,你可以简单地使用 jQuery 的 submit() 函数:

    $("#myform").submit();
    

    【讨论】:

    猜你喜欢
    • 2020-05-10
    • 2020-10-22
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    相关资源
    最近更新 更多