使用 AJAX 将表单提交到两个位置

Using AJAX to submit form to two locations

本文关键字:两个 位置 AJAX 表单提交 使用      更新时间:2023-09-26

我需要一些帮助。我正在使用 AJAX 将表单提交到一个位置,然后提交到另一个位置。一旦它发布到第二个位置,它就会向我想要的任何人发送一封带有 PHP 的电子邮件,但我似乎无法让它工作。有人可以帮忙吗?

这是我下面的代码:

$(document).ready(function(){
        $('input#submit').submit(function(event){
            var dataString = $('form :input').serialize();
            $.ajax({
                type: 'GET',
                url: 'http://www.domain.com/sendmail.php',
                data: dataString,
                success: function(result){
                    $('p#message').text('SUCCESS!!!');
                },
                error: function(result){
                    $('p#hint').text('there was an error');
                }
            });
            event.preventDefault();
        });
    });

除非你已经有一些算法,否则你在服务器端处理数据时会遇到问题。您可能希望准备数据,然后将其字符串化为 JSON。我还会将 ajax 功能保留在其自己的函数中,并使用 promise 功能。这样,您还可以将其用于脚本中的其他调用。

具有延迟的 Ajax 函数

function ajaxsend(data, url) {
    var deferred = $.ajax({
        type: 'POST',
        url: url,
        data: data,
        dataType: "json",
    });
    return deferred.promise();
}

表单数据处理和准备

$("form").submit(function (event) {
    event.preventDefault();
    var formdata = $('form').serializeArray();
    var formobject = {};
    // transform data to prepare for JSON
    $(formdata).each(function (e) {
        formobject[formdata[e].name] = formdata[e].value;
    });
    var data = {
        json: JSON.stringify(formobject)
    };
    var url = 'http://www.domain.com/sendmail.php';
    var url2 = 'some_other.php';
    ajaxsend(data, url).done(function (response) {
        // handle returned results
        console.log(response);
    }
    ajaxsend(data, url2).done(function (response) {
        // handle returned results
        console.log(response);
    }
}

在服务器端,您通过以下方式接收值:

$data = json_decode($_POST['json']);

然后,您可以使用表单的字段名称访问数据。例如。。

$data -> firstname;

您可以从 php 文件发送响应:

if(success == true) {
  $result = array("success" => true , "message" => "form submitted");
  echo json_encode($result);
}
if(success == false) {
  $result = array("success" => false , "message" => "an error occured");
  echo json_encode($result);
}

在javascript端,你可以捕获响应值

console.log(response.success);
console.log(response.message);

检查差异:

       $('form').submit(function(event){ // 'input#submit' is a button and cannot be "submited", just clicked
            var dataString = $(this).serialize(); // suffisant
            $.ajax({
                type: 'GET',
                url: 'http://www.domain.com/sendmail.php',
                data: dataString,
                success: function(result){
                    $('p#message').text('SUCCESS!!!');
                    return true; // trigger the form default action
                },
                error: function(result){
                    $('p#hint').text('there was an error');
                }
            });
            event.preventDefault();
        });