首页 > 解决方案 > 单个表单中的多个 POST 请求

问题描述

我有以下表格,其中仅包含一个电子邮件输入。

<form action="model.php" name="f1mail" method="POST" id="form45">
    <input id="field0" type="email" name="email" class="field" required>
    <input type="submit" class="start submit-button" value="Next">
</form>

提交表单后,我需要对这个客户信息做两件事。首先,我需要将此电子邮件发送到托管在另一台服务器中的数据库。其次,我需要在同一台服务器中调用一个 php 文件。

为此,我在表单的操作中调用 php 文件,然后执行此 AJAX 代码来向外部 url 发出请求:

$(document).ready(function() {
    // Process the form
    $('#form45').submit(function(event) {
        // AJAX request
        $.ajax({
            url         : 'https://my_url?&callback=',
            data        : 'email=' + email,
            type        : 'POST',
            dataType    : 'jsonp',
            success     : function(resp) {
                alert(resp);
            },
            error       : function(e) {
                alert('Error: ' + e);
            }
        });
    });
});

但这不起作用。任何人都知道两个如何同时将表单的相同信息提交到两个不同的 URL?不知道有没有其他方式,不一定是AJAX,也许用Python和Flask或者其他语言更容易实现。

谢谢!!!

标签: phpjqueryajax

解决方案


我终于解决了。对于有同样问题的任何人,这是我所做的解决方案。

正如一些人在评论中告诉我的那样,我使用 PHP 的 cURL 库来发出 POST 请求,然后做我需要的所有其他事情。让我解释一下……我

没有调用两个不同的 URL,而是在我自己的服务器中调用了一个,您可以在表单的操作中看到 model.php 页面。此页面与电子邮件信息有关。但是在所有这些事情开始之前,我把这段代码放在了对外部 URL 的 POST 请求中,然后代码跟在前面的需要后面。

<?php
    // Get cURL resource
    $curl = curl_init();
    // Set up the request for external_url
    curl_setopt_array($curl, array(
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_URL => 'https://external_url',
        CURLOPT_USERAGENT => 'sample',
        CURLOPT_POST => 1,
        CURLOPT_POSTFIELDS => array(
            'email'          => $email,
            // More vars if needed
            ...
        )
    ));
    // Send the request and check errors
    $resp = curl_exec($curl);
    if(!$resp){
        die('Curl error: ' . curl_error($curl));
    }
    // Clear up resources
    curl_close($curl);
?>

推荐阅读