jQueryJSON和PHP玩得不好
我相信这是件简单的事情,但我已经搞了好几天了,这让我发疯了 我很难从AJAX请求中获取正确的JSON。有趣的是,使用XML而不是JSON也会出现同样的问题,所以我真的很困惑。我为你们简化了一些事情(并没有改变问题): ajax.php:jQueryJSON和PHP玩得不好,php,jquery,xml,json,Php,Jquery,Xml,Json,我相信这是件简单的事情,但我已经搞了好几天了,这让我发疯了 我很难从AJAX请求中获取正确的JSON。有趣的是,使用XML而不是JSON也会出现同样的问题,所以我真的很困惑。我为你们简化了一些事情(并没有改变问题): ajax.php: header("Content-type: application/json;"); $data = file_get_contents($_REQUEST['url']); echo $data; page.php: $.post('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):
如果您转到该URL,您可以清楚地看到该条目的长度为1。这就是我真正困惑的地方:
如果我转到ajax.php并复制输出,然后让ajax.php直接回显数据,控制台会记录正确的信息。有人能解释为什么会这样,或者如何修复它吗
编辑:
为了更清楚一点,这里有两个JSON树(第一个无法正确解析,第二个是正确的):
JSON.stringify(数据)
要在JavaScript中输出JSON,我很肯定您也在检查对象的长度,如果存在,则长度等于1,如果不存在,则长度等于0。一个快速的测试将是
console.log(typeof feed.entry)
0不表示条目中的项目数;它是条目中第一个条目的索引,后面会进行描述4是类别数组中第一个条目的索引?否,4是数组的长度。此外,当直接回显数据时,控制台正确显示条目[1]。展开树,然后显示索引0有一个对象的值。我不是要输出对象的字符串,而是要输出条目数组中包含的对象成员的值。无论哪种方式,stringify在这两种情况下都能按预期工作(根据我在您回答后添加的树)。
console.log(typeof feed.entry)