使用json的Ajax post不会发送数据或显示错误消息
我正在尝试将联系人表单数据发送到数据库,并使用json获得响应 我得到的唯一错误是: SyntaxError:JSON中位于位置0的意外标记T 我的ajax:使用json的Ajax post不会发送数据或显示错误消息,json,ajax,Json,Ajax,我正在尝试将联系人表单数据发送到数据库,并使用json获得响应 我得到的唯一错误是: SyntaxError:JSON中位于位置0的意外标记T 我的ajax: $(document).ready(function(){ $('#send').on('click',function(e){ e.preventDefault(); var name = $('#name').val(); var email = $('#email').val(); var ph
$(document).ready(function(){
$('#send').on('click',function(e){
e.preventDefault();
var name = $('#name').val();
var email = $('#email').val();
var phone = $('#phone').val();
var subject = $('#subject').val();
var message = $('#message').val();
$.ajax({
url : '<?php echo $baseurl;?>/contactus.php',
type: 'post',
dataType : 'json',
data : {name:name,email:email,phone:phone,subject:subject,message:message},
success:function(response){
if(response.type == 'error'){
output = '<div class="error">'+response.text+'</div>';
}else{
$('#form')[0].reset();
output = '<div class="success">'+response.text+'</div>';
}
$("#contact_results").html(output);
},
error: function(xhr, textStatus, error){
console.log(xhr.statusText);
console.log(textStatus);
console.log(error);
}
});
});
});
$(文档).ready(函数(){
$('#send')。在('click',函数(e){
e、 预防默认值();
var name=$('#name').val();
var email=$('#email').val();
var phone=$('#phone').val();
var subject=$('#subject').val();
var message=$('#message').val();
$.ajax({
url:“/contactus.php”,
键入:“post”,
数据类型:“json”,
数据:{name:name,email:email,phone:phone,subject:subject,message:message},
成功:功能(响应){
如果(response.type=='error'){
输出=''+响应。文本+'';
}否则{
$('#form')[0].reset();
输出=''+响应。文本+'';
}
$(“#联系结果”).html(输出);
},
错误:函数(xhr、textStatus、error){
console.log(xhr.statusText);
console.log(textStatus);
console.log(错误);
}
});
});
});
我的PHP:
header('Content-Type:application/json');
include('include-global.php');
if($_POST){
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH'])) {
print "Can't access directly!";
exit;
}
$sender_name = $_POST["name"];
$sender_email = $_POST["email"];
$phone_number = $_POST["phone"];
$subject = $_POST["subject"];
$message = $_POST["message"];
if(strlen($sender_name)<3){
$output = json_encode(array('type'=>'error', 'text' => 'First and lastname is too short!'));
die($output);
}
if(strlen($subject)<3){ //check emtpy subject
print json_encode(array('type'=>'error', 'text' => 'Subject too short'));
exit;
}
if(strlen($message)<3){ //check emtpy message
print json_encode(array('type'=>'error', 'text' => 'Message too short'));
exit;
}
try{
$database = new Connection();
$db = $database->openConnection();
$sql = "INSERT INTO contact SET name = :name, phone = :phone, subject = :subject, email = :email, message = :message";
$qry = $db->prepare($sql);
$qry -> bindParam(':name', $sender_name, PDO::PARAM_STR);
$qry -> bindParam(':phone', $phone_number, PDO::PARAM_STR);
$qry -> bindParam(':email', $sender_email, PDO::PARAM_STR);
$qry -> bindParam(':subject', $subject, PDO::PARAM_STR);
$qry -> bindParam(':message', $message, PDO::PARAM_STR);
$qry -> execute();
} catch (PDOException $e) {
echo "There is some problem in connection: " . $e->getMessage();
}
if(!$qry){
print json_encode(array('type'=>'error', 'text' => 'Error.'));
exit;
}else{
print json_encode(array('type'=>'message', 'text' => 'Thank you '. $sender_name . '.'));
exit;
}
}
header('Content-Type:application/json');
include('include-global.php');
如果(美元邮政){
如果(!isset($\u服务器['HTTP\u X\u请求的\u带有'])){
打印“无法直接访问!”;
出口
}
$sender\u name=$\u POST[“name”];
$sender_email=$_POST[“email”];
$phone\u number=$\u POST[“phone”];
$subject=$_POST[“subject”];
$message=$_POST[“message”];
如果(strlen($sender_name)“error”,“text”=>“First and lastname太短!”);
模具(产量);
}
如果(strlen($subject)'error','text'=>'subject太短');
出口
}
如果(strlen($message)'error','text'=>'message太短');
出口
}
试一试{
$database=新连接();
$db=$database->openConnection();
$sql=“插入联系人集name=:name,phone=:phone,subject=:subject,email=:email,message=:message”;
$qry=$db->prepare($sql);
$qry->bindParam(':name',$sender_name,PDO::PARAM_STR);
$qry->bindParam(':phone',$phone_number,PDO::PARAM_STR);
$qry->bindParam(':email',$sender_email,PDO::PARAM_STR);
$qry->bindParam(':subject',$subject,PDO::PARAM_STR);
$qry->bindParam(':message',$message,PDO::PARAM_STR);
$qry->execute();
}捕获(PDO$e){
echo“连接中存在一些问题:”.e->getMessage();
}
如果(!$qry){
打印json_编码(数组('type'=>'error','text'=>'error');
出口
}否则{
打印json_编码(数组('type'=>'message','text'=>'thankyou'.$sender_name.');
出口
}
}
我不明白我做错了什么
代码和JSON似乎是正确的,我从谷歌那里得到了一个例子。
我正在使用数据类型,标题内容类型json,但仍然显示错误。发布正在传递的json。@hungersoft不会使用ajax数据类型json将联系人表单数据发布到数据库。根据您的php代码,我想您需要从ajax Post请求中删除
数据类型。@hungersoft在php中使用json,所以我必须使用DataType DataType是您所期望的;contentType是您发送的内容。