Javascript 无法使用Jquery Ajax打印成功消息
我使用jQueryAjax发布表单数据并显示成功消息。一切正常,但我无法显示成功消息。代码如下: JavascriptJavascript 无法使用Jquery Ajax打印成功消息,javascript,php,jquery,Javascript,Php,Jquery,我使用jQueryAjax发布表单数据并显示成功消息。一切正常,但我无法显示成功消息。代码如下: Javascript <script> $(document).ready(function() { $('form').submit(function(event) { //Trigger on form submit $('#stage').empty(); var postForm = { //Fetch
<script>
$(document).ready(function() {
$('form').submit(function(event) { //Trigger on form submit
$('#stage').empty();
var postForm = { //Fetch form data
"name": $("#name").val(),
"element_4_1": $("#element_4_1").val(),
"element_4_2": $("#element_4_2").val(),
"element_4_3": $("#element_4_3").val(),
"email": $("#email").val(),
"input4": $("#input4").val(),
};
$.ajax({ //Process the form using $.ajax()
type : 'POST', //Method type
url : 'contact.php', //Your form processing file url
data : postForm, //Forms name
dataType : 'json',
success : function(data) {
console.log("inside success3") ;
alert(data);
$("#stage").html(data);
if (!data.success) { //If fails
if (data.errors) { //Returned if any error from process.php
$('.throw_error').fadeIn(1000).html(data.errors); //Throw relevant error
console.log("inside failure") ;
}
} else {
console.log("inside success") ;
$('#stage').fadeIn(1000).append('<p>' + data.posted + '</p>');
console.log("inside success2") ;
}
}
});
event.preventDefault(); //Prevent the default submit
});
});
</script>
$(文档).ready(函数(){
$('form').submit(函数(事件){//表单提交时触发
$('#stage').empty();
var postForm={//获取表单数据
“名称”:$(“#名称”).val(),
“element_4_1”:$(“#element_4_1”).val(),
“element_4_2”:$(“#element_4_2”).val(),
“element_4_3”:$(“#element_4_3”).val(),
“电子邮件”:$(“#电子邮件”).val(),
“input4”:$(“#input4”).val(),
};
$.ajax({//使用$.ajax()处理表单)
类型:'POST',//方法类型
url:'contact.php',//您的表单处理文件url
数据:postForm,//表单名称
数据类型:“json”,
成功:功能(数据){
控制台日志(“内部成功3”);
警报(数据);
$(“#stage”).html(数据);
if(!data.success){//if失败
if(data.errors){//如果process.php中有任何错误,则返回
$('.throw_error').fadeIn(1000.html(data.errors);//抛出相关错误
控制台日志(“内部故障”);
}
}否则{
控制台日志(“内部成功”);
$('#stage').fadeIn(1000).append(''+data.posted+'');
控制台日志(“内部成功2”);
}
}
});
event.preventDefault();//防止默认提交
});
});
PHP:
<?php
ini_set('display_errors','On');
error_reporting(E_ALL);
$errors = array();
$form_data = array();
header('Content-type: application/json');
echo json_encode($form_data);
$name=$_POST['name'];
$phone=chop($_POST['element_4_1']);
$phone.=chop($_POST['element_4_2']);
$phone.=chop($_POST['element_4_3']);
$email=chop($_POST['email']);
$message1=chop($_POST['input4']);
if ($name && $phone && $email) {
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
$headers .= "From: sales@test.com \n";
$recipient= "test@test.in";
$subject="Online Enquiry ";
$message="\nName : $name\n";
$message.="\nPhone : $phone\n";
$message.="\nEmail ID : $email\n";
$message.="\nMessage : $message1\n";
//send auto-reply
$subject_reply="Thank you for contacting us";
$message_reply="Thank you for contacting us. We will get back to you shortly.";
//mail($email, $subject_reply, $message_reply, $headers);
//Send Mail
//===========
if(isset($recipient, $subject, $message, $headers)) {
error_log($message);
$form_data['status'] = 'success';
error_log($form_data['status']);
} else {
$form_data['status'] = 'error';
error_log($form_data['status']);
} ?>
HTML
<div id="stage">
</div>
如何打印成功消息在php脚本的开头有以下内容:
echo json_encode($form_data);
其中,$form_data
当时是一个空数组
您应该删除它并将其放在末尾。您是否有一个错误可以更好地解释问题?chrome或Firefox上的开发者控制台?检查是否设置了这些变量如何判断邮件是否成功?我使用firebug…我尝试将日志中变量的值打印为well@Barmar我在HTML表单中进行验证,在这里我设置了所有必需的字段。我是做对了还是应该用另一种方式来做。请告诉我你应该使用
if(mail(…){success stuff}或者{failure stuff}
。我尝试了你的答案,我领先了一步。我在firebug控制台中打印的success函数中看到了console.log(“success 3”)
。但仍然没有显示成功消息。@user3004356不执行警报(数据)代码>。Doconsole.log(数据)代码>以便您可以检查它确切包含的内容。还要注意,data
只包含您在php中添加到数组中的内容,因此使用$(“#stage”).html(数据)
应该是$(“#stage”).html(data.status)
。我在控制台上得到这个-对象{status=“success”}
@user3004356对,这就是您在php中添加到数组中的内容。请参阅我上一篇评论的最后一部分。旁注:由于前面提到的原因,checking.success和.errors将产生未定义的结果