使用json的Ajax post不会发送数据或显示错误消息

使用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

我正在尝试将联系人表单数据发送到数据库,并使用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 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是您发送的内容。