1

我需要一些帮助。我正在使用 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();
        });
    });
4

2 回答 2

1

除非您已经有一些算法,否则您将在服务器端处理数据时遇到问题。您可能需要准备数据并将其字符串化为 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);
于 2013-09-29T22:05:13.947 回答
0

检查差异:

       $('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();
        });
于 2013-09-29T21:22:20.067 回答