在AJAX请求中的Parsererror,表单提交

时间:2014-03-07 11:15:15

标签: javascript php jquery ajax json

我正在使用AJAX请求submit form登录。

$.post(url, {data: JSON.stringify( {obj: value} )}, 'json')
 .fail(function(){
    console.log(typeof arguments[0].responseText) //logs 'string'
    //console.log(JSON.parse(arguments[0].responseText)) // decommented logs "unexpected     token"
    console.log(arguments) 
 });

我正在

1: "parsererror"
2: SyntaxError
   message: "Unexpected token "
..
..

我也设置了header("Content-type: application/json"),但它没有解决问题, 我也使用json_encode作为服务器端响应。

我得到了status: 200,似乎是json responseText。我不知道还能做什么。

(不要将此问题标记为副本,我确实搜索了SO,没有问题解决了我的问题)

修改 添加了responseText

responseText: "↵{"success":true,"error":false}"

火狐

"\r\n{"success":true,"error":false}"

EDIT2

json_encode(array( .. )) 

介绍\r\n,但我不知道原因。

1 个答案:

答案 0 :(得分:1)

是意外的char响应,请在服务器端的json_encode函数之前使用ob_start函数。 这是enter密钥代码,请从回复中删除

ltrim(json_encode($response_arr), "\r\n"); // this would be useful in php code

//

responseText: "↵{"success":true,"error":false}"

responseText: "{"success":true,"error":false}"

ajax响应中的问题,请参阅打击图片以便更好地理解 enter image description here new line案例(红色标记)将包含在您的服务器代码中..如果您可以删除new line,则问题将得到解决。

其他解决方案

删除标头(Content-type : application/json)并在jQuery代码中使用jQuery.parseJSON(jQuery.trim(response))

ajax代码

$.post(url, {data: JSON.stringify( {obj: value} )}, function(response){
      var data = jQuery.parseJSON(jQuery.trim(response));
      console.log(data);
})
 .fail(function(){
    console.log(typeof arguments[0].responseText) //logs 'string'
    //console.log(JSON.parse(arguments[0].responseText)) // decommented logs "unexpected     token"
    console.log(arguments) 
 });