【问题标题】:Two actions from the same form来自同一个表单的两个动作
【发布时间】:2011-03-25 09:59:31
【问题描述】:

我需要让一个表单执行两个脚本,这意味着来自同一个表单的两个不同操作。我已经尝试了一些在提交按钮上的 onClick 操作中使用 form.submit() 的 javascript。但是,这两个操作之一是发送到 Dynamics CRM 的 ASPX 脚本。有什么建议吗?

【问题讨论】:

  • 为什么 ASPX 脚本会妨碍使用 JavaScript 执行此操作? (这是唯一的方法)
  • 不一定。但是我可以得到一个 Javascript 来处理两个不同的 PHP 文件。 ASPX 是我无权访问的文件。这就是为什么我首先需要第二个动作。

标签: php ajax action


【解决方案1】:

一旦完成操作,表单可能只有一个操作会将请求转发到第二个操作

【讨论】:

  • 绝对同意。 <form action="action1.php" method="post">,在 action1.php 上做你的事情,然后将数据发送到 action2.php。
  • +1 — 在服务器上执行此操作而不是试图让客户端执行表单不是为之设计的事情是正确的解决方案。转发可以(并且通常应该)完全在内部完成,只需一个简单的控制器将数据推送到两个例程进行处理,然后将单个结果返回给浏览器。
  • 我无法访问第一个操作,否则我会接受 hookedonwinter 的建议。有人可以用一些 AJAX 为我指明正确的方向吗?
  • 你了解 jquery ajax 调用吗? (询问是因为解决方案将是详细的还是模糊的)
  • @shummel 很抱歉没有从一开始就彻底阅读您的问题。我应该看到 aspx 部分,而不是提出我原来的建议。
【解决方案2】:

使用jQuery,您可以中断表单提交并在实际提交之前做自己的事情。

使用jquery's ajax post的示例:

$( 'form' ).submit( function(){
    $.post( 
        'action2.php', // url of php

        {                // data to send
            data1:'bob', 
            data2:'denver'
        }

    )
})

【讨论】:

  • @shummel 这不仅仅是“即插即用”。您需要先包含 jquery,等等。阅读 jQuery,它非常有用。
  • 谢谢,hookedonwinter。希望我能做到这一点。
【解决方案3】:

难道你没有一个发送信息的中间脚本吗?到第二个脚本?例如(submit.php):

<?php
if (isset($_POST['action_1'])) {
    // send to script 1
}
else if ($_POST['action_2']) {
    // send to script 2
}
else {
    // friendly error handling here
}
?>

还有你的表单标记...

<form action="submit.php" method="post">
  <input type="submit" name="action_1" value="Action 1" />
  <input type="submit" name="action_2" value="Action 2" />
</form>

【讨论】:

    猜你喜欢
    • 2019-05-24
    • 1970-01-01
    • 2019-11-20
    • 2016-12-07
    • 2023-01-08
    • 2022-11-14
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多