语法错误:意外标记<在JSON在位置0” 的错误在AJAX

问题描述:

我发送数据通过AJAX请求并处理返回的数组中的数据,其被编码为JSON格式后。语法错误:意外标记<在JSON在位置0” 的错误在AJAX

$response = array(
      'data' => $leaveData, 
      'message' => 'Event added successfully', 
      'status' => 'success' 
     ); 
echo json_encode($response); 
exit; 

其中$leaveData是关联数组:

Array 
(
    [id] => 131 
    [user_id] => 134 
    [leave_type_id] => 2 
    [issued_date] => 2017-10-17 
    [leave_from] => 2017-10-25 
    [leave_to] => 2017-10-26 
    [leave_description] => test 
    [leave_status] => 1 
) 

这里是我的Ajax请求:

$.ajax({ 
url:"leave/request", 
data:{ 
    id:eventID, 
    user_id:empID, 
    leave_type:leaveType, 
}, 
    type:"POST", 
    cache:false, 
    success: function (data, resp){ 
    var json = data, 
    obj = JSON && JSON.parse(json) || $.parseJSON(json); 
    } 
}); 

另外,我觉得JSON && JSON.parse(json) || $.parseJSON(json)用于同样的目的?

我不知道发生了什么问题。

+2

console.log(json)并发布您收到的json是 – user2887596

+0

错误提示您的php脚本的输出是xml/html。浏览器开发人员工具中的确切响应是什么? – jeroen

+0

未捕获的SyntaxError:意外令牌) 在Object.success(core_request_calendar.js:379) 在火(jquery的-1.10.2.js:3101) 在对象。 fireWith [as resolveWith](jquery-1.10.2.js:3213) at done(jquery-1.10.2.js:9312) at XMLHttpRequest.callback(jquery-1.10.2.js:9722) – Azima

你可以使用AJAX dataType属性interprate JSON像Ajax响应后直接:

$.ajax({ 
    url:"leave/request", 
    dataType: "json", 
    data:{ 
     id:eventID, 
     user_id:empID, 
     leave_type:leaveType, 
    }, 
    type:"POST", 
    cache:false, 
    success: function (data){ 
     console.log(data); 
    } 
}); 
+0

@Azima而不是downvote,最好说,为什么它不是解决你的麻烦,你喜欢什么作为回答 – GGO

+0

这不是我谁downvoted你的答案..对不起! – Azima

+0

好的,对不起,你有没有试过这个解决方案? – GGO

添加一个 “错误” 回调到你的Ajax功能,然后打印内容:

error: function(data) { 
     console.log("AJAX ERROR:", data); 
    } 

这将告诉你什么ajax试图解析为json。

+0

尝试解析数据时发生'success'函数错误,所以没有ajax错误。 – jeroen

+0

是的...我有那个错误回调函数,并没有被击中..错误发生在成功函数 – Azima

+0

如果你添加数据类型:'json',响应的解析是自动的,并且错误回调将执行工作。 无论如何,您可以打印回应并检查它是否是有效的json字符串。否则你发现了这个问题。你只有这些方法来解决。 而且......我不知道为什么仇恨者必须投票否定解决方案,愚蠢的人:\ – Ryosaku