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