Javascript SyntaxError:JSON.parse:空结果的意外字符
我知道有几个人问同一个问题,但我无法从这些问题中找到问题的答案。 我有以下代码Javascript SyntaxError:JSON.parse:空结果的意外字符,javascript,php,ajax,json,Javascript,Php,Ajax,Json,我知道有几个人问同一个问题,但我无法从这些问题中找到问题的答案。 我有以下代码 $.post("show_search_results.php", {location_name: ""+location_name+"", key: ""+key+"", category_id: ""+category_id+"", page_number: ""+page_number+""}, function(data){ if(data.length >0){ var dataArray =
$.post("show_search_results.php", {location_name: ""+location_name+"", key: ""+key+"", category_id: ""+category_id+"", page_number: ""+page_number+""}, function(data){
if(data.length >0){
var dataArray = JSON.parse(data);
var result_count=(dataArray.root.data.partners).length;
if(result_count > 0){
//block a;
}else if(s_limit==0){
//block b;
}else{
//block c;
}
}});
我使用php作为后端。这段代码在我的本地服务器上运行良好,在具有以下json的live server上运行良好
{"root": {"success":"1","message":"Successfully retrieved data.","data":{"partners":[{"store_name":"Mega Mart (Readymade Brands)","store_address":"Next to SBI, Vyttila, Ernakulam","store_phone":"","item_name":"Festival of Young at 999","item_description":"Megamart celebrates the spirit of being young. Take home 4 groovy T-shirts or 2 stylish shirts or 3 women kurtas for just rupees 999.","item_offer":"999 Offer","offer_expiry":"2014-06-08","tag1":"T-shirt","tag2":"Dress","tag3":"Jeans","store_id":"a9e12c46-ee00-11e3-a5e4-bc305be6e93e"}]}}}
但是对于这个json
{"root": {"success":"2","message":"no results found","data":{"partners":[]}}}
在live server中显示
SyntaxError: JSON.parse: unexpected character
var dataArray = JSON.parse(data);
我试图从代码中删除JSON.parse,但它显示
TypeError: dataArray.root is undefined
var array_locations=dataArray.root.data.locations;
请帮我找到解决办法。
谢谢。所以你不应该真的需要手工做JSON.parse——如果你告诉jQuery需要JSON,jQuery可以帮你做这件事。它通常在返回响应中使用Content-Type头,但您可以告诉它解析JSON:
$.post({
url: "show_search_results.php",
data: {
location_name: ""+location_name+"",
key: ""+key+"",
category_id: ""+category_id+"",
page_number: ""+page_number+""
},
dataType: "json",
success: function(data){
// do something with data here...
alert(data.root.message);
}
});
顺便说一下,我尝试将您在那里指定的JSON放入Chrome调试控制台上的JSON.parse中,效果很好。JSON没有问题。像这样改变你的条件
if(data.length >0){
var dataArray = JSON.parse(data);
if(typeof dataArray.root != undefined && dataArray.root.success == 1) {
// Success
}
else {
// Failure
}
}
您的搜索数据与数据库数据不匹配。这就是为什么在你的研究中没有发现结果message@Renjith:这很好,但是错误JSON.parse:意外字符怎么办