我正在使用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
,但我不知道原因。
答案 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响应中的问题,请参阅打击图片以便更好地理解
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)
});