jQuery JSON和PHP不好玩

时间:2014-03-04 23:16:58

标签: 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', { 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树(第一个无法正确解析,第二个是正确的):

length=0 length=1

2 个答案:

答案 0 :(得分:2)

0表示进入中的项目数;它是条目中第一个项目的索引,后面将对此进行描述

答案 1 :(得分:0)

JSON.stringify(data)

在JavaScript中输出JSON,我非常肯定你正在检查对象的长度,如果它存在则等于1,如果不存在,则为0。快速测试将是

console.log(typeof feed.entry)