我确信这很简单,但我已经搞砸了好几天了,这让我发疯了!
我无法从AJAX请求中获取正确的JSON。有趣的是,使用XML而不是JSON会发生同样的问题,所以我真的很困惑。我为你们简化了一些事情(不改变问题):
ajax.php:
header("Content-type: application/json;");
$data = file_get_contents($_REQUEST['url']);
echo $data;
page.php文件:
$.post('ajax.php', { url: 'https://apps.nlm.nih.gov/medlineplus/services/mpconnect_service.cfm?mainSearchCriteria.v.cs=2.16.840.1.113883.6.103&mainSearchCriteria.v.c=300.02&knowledgeResponseType=application/json' }, function(data){
console.log(data);
});
控制台输出(注意feed.entry的长度为0):
Object {feed: Object} feed: Object author: Object base: "http://www.nlm.nih.gov/medlineplus/" category: Array[4] entry: Array[0] id: Object lang: "en" subtitle: Object title: Object updated: Object
如果您转到该网址,则可以清楚地看到该条目的长度为1。这是我真正困惑的地方:
如果我转到ajax.php并复制输出,然后让ajax.php直接回显数据,控制台会记录正确的信息。谁能解释为什么会这样,或者如何解决它?
编辑:
为了使它更清晰一点,这里有两个JSON树(第一个无法正确解析,第二个是正确的):
答案 0 :(得分:2)
0表示进入中的项目数;它是条目中第一个项目的索引,后面将对此进行描述
答案 1 :(得分:0)
JSON.stringify(data)
在JavaScript中输出JSON,我非常肯定你正在检查对象的长度,如果它存在则等于1,如果不存在,则为0。快速测试将是
console.log(typeof feed.entry)