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

时间:2013-09-29 21:18:48

标签: javascript jquery html ajax

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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();
        });