【问题标题】:Sending form data to 2 places将表单数据发送到 2 个地方
【发布时间】:2014-01-20 14:08:29
【问题描述】:

我继承了一个在 PHP4.4.9 上运行的系统,但是我需要做一些需要 5.0 或更高版本的操作,目前我们无法升级,因为它是“包”(Hornbill Supportworks)的一部分,会破坏各种功能和功能。 我所做的是暂时将 php 5+ 的东西添加到我的个人网站空间中。 我的一个例子是:

<form action="./ChangeStatusSubmit.php" method="post" name="main">
<input type="text" size="15" maxlength="43" name="GappsMailTextS">
<button type="submit">
Submit status changes
</button>
</form>

在表单操作中,我也希望它发布到http://www.externalurl/test.php,有人可以帮忙吗?我没有找到任何可以在线工作的东西,因为它需要“curl”或 ajax(我从未使用过/见过 ajax,所以我不知道如何将它放入文件中!任何帮助表示赞赏。

【问题讨论】:

  • curl 或 ajax 是真的..
  • 我很想知道您需要做哪些需要 PHP5 的操作。在 PHP4 中几乎没有你不能做的事情 - 有时只是需要更多的努力。
  • @MikeW 这是一个状态更新页面,当我们的系统启动/关闭时,我们会更新一个页面,以便我们的用户可以看到,php5 进来了,因为我们还想在推特上发布我们发布给他们的更新文本.我能找到发推文的唯一方法是使用 php5
  • 您不能只将您的测试文件包含在另一个文件中,或者像您对测试文件所做的那样为测试目的制作一个单独的表格吗?
  • @Adsy2010,不,一个文件存在于我们的网络上(ChangeStatusSubmit.php),并且在使用 php4 的服务器上,另一个在我的使用 php5 的网络空间(test.php)上,就是这样需要工作,两者都可以自己工作,只需要同时提交它们即可。

标签: javascript php html forms post


【解决方案1】:

表单通常只发布到一个 URL,因为一般来说,POST 与 GET 没有什么不同,因为浏览器向服务器请求 URL 并显示结果。 (唯一的实际区别在于输入数据在 HTTP 请求中的放置位置,超出了此答案的范围)。

一种方法是让第一台服务器(表单action 的主机)将数据发送到第二台服务器,如果需要,将第二台服务器的响应合并到发送回浏览器的输出中。

【讨论】:

    【解决方案2】:

    您需要为此使用 AJAX。无法向表单添加两个操作。您可以 ajax 您的第一个操作,然后在 .done 处理程序中提交声明的表单操作。希望你有 jquery,在 ajax 中使用普通的 js 要困难得多。
    部分链接:
    http://api.jquery.com/jquery.ajax/#example-0
    How to make an AJAX call without jQuery?

    所以基于上面的例子,jquery 解决方案可能是这样的:

    $('form[name=main]').submit(function() {
      return false;
      $.ajax({
        type: "POST",
        url: "http://www.externalurl/test.php",
        data: { GappsMailTextS: $('input[name=GappsMailTextS]').value() }
      })
      .done(function( msg ) {
        $('form[name=main]').submit();
      });
    )};
    

    【讨论】:

    • 由于浏览器中的same origin 安全策略,这将失败。第二个目标站点上的 JSONP 请求或 CORS 标头可能会解决此问题。
    • @aksu 我们确实有 jquery,是的,我以前从未接触过 AJAX,如何将它放在 php 页面中?它是在
    • 是的,@Maff。您需要将此代码放置在您的head 部分中的script 标记中。
    【解决方案3】:

    正如@aksu 所发布的,AJAX 是您可以用来解决此问题的一种工具。

    但是,如果您希望将其作为表单提交处理到两个不同的服务器,那么还有其他方法可能对您有用。

    表单上的action 属性告诉我们应该将表单发布到哪里。我想你应该可以使用Javascript将表单提交到一台服务器,然后修改表单使action属性指向不同的服务器,然后再次提交。

    我不确定,但您可能还需要修改 target 属性以告诉浏览器不要在同一窗口中打开新页面,因为这可能会停止您的 Javascript。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-26
      • 2016-04-04
      • 1970-01-01
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多