【问题标题】:jQuery JSON and PHP not playing nicejQuery JSON 和 PHP 表现不佳
【发布时间】:2014-03-04 23:16:57
【问题描述】:

我确信这很简单,但我已经搞砸了好几天,这让我发疯了!

我无法从 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

如果您访问该 URL,您可以清楚地看到该条目的长度为 1。这才是真正让我困惑的地方:

如果我去 ajax.php 并复制输出,然后让 ajax.php 直接回显数据,控制台会记录正确的信息。谁能解释这是为什么,或者如何解决?

编辑:

为了更清楚一点,这里是两个 JSON 树(第一个解析不正确,第二个正确):

【问题讨论】:

    标签: php jquery xml json


    【解决方案1】:

    0 不表示条目中的项数;它是条目中第一项的索引,后面会描述它

    【讨论】:

    • 那么 4 是类别数组中第一个条目的索引吗?不,4 是数组的长度。此外,直接回显数据时,控制台正确显示条目[1]。展开树然后显示索引 0 有一个对象的值。
    【解决方案2】:

    JSON.stringify(data)

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

    console.log(typeof feed.entry)
    

    【讨论】:

    • 我不是要输出对象的字符串,而是要输出条目数组中包含的对象成员的值。无论哪种方式,stringify 在两种情况下都按预期工作(根据我在您回答后添加的树)。
    猜你喜欢
    • 2013-02-02
    • 1970-01-01
    • 2012-04-25
    • 2011-03-29
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 2010-11-18
    相关资源
    最近更新 更多