Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQueryJSON和PHP玩得不好_Php_Jquery_Xml_Json - Fatal编程技术网

jQueryJSON和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', {

我相信这是件简单的事情,但我已经搞了好几天了,这让我发疯了

我很难从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):

如果您转到该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)