gpt4 book ai didi

javascript - jQuery .getJSON() 不解析所有对象

转载 作者:行者123 更新时间:2023-11-29 22:40:55 25 4
gpt4 key购买 nike

我正在使用 jQuery 的 .getJSON 函数来解析来自 Google Search Appliance 的一组搜索结果。 Search Appliance 有一个 xslt 样式表,它以 JSON 数据的形式返回结果,我使用 JSONLint 和 Curious Concept 的 JSON Formatter 对其进行了验证。

根据 FireBug,完整的结果集从 XMLHTTPRequest 返回,但我尝试转储数据(使用 jquery.dump.js)并且它只解析回第一个结果。它确实成功获取了所有 Google 搜索协议(protocol)内容,但它只看到一个“R”对象(或单个结果)。

有人对 jQuery 的 .getJSON 有类似的问题吗?我知道如果 JSON 无效,它喜欢默默地失败,但就像我说的,我用几个验证器验证了结果,应该可以继续了。

编辑:单击此链接将显示搜索“google”一词时返回的 JSON 结果:http://bigbird.uww.edu/search?client=json_frontend&proxystylesheet=json_frontend&proxyrefresh=1&output=xml_no_dtd&q=google

jQuery 只检索第一个“R”对象,即使所有“R”对象都是兄弟。

最佳答案

您可以尝试使用自己的“jsonpCallback”函数自己执行“getJSON”。如果您正在调用的 API 的响应看起来像一个以逗号分隔的 列表 JSON 表达式,那么 jQuery 自动构造的回调函数将只会看到第一个。

换句话说,如果API返回

{something: "foo", whatever:23}, {something: "bar", whatever, 32}

那么响应脚本 block 中的结果是:

magicJqueryCallback({something: "foo", whatever:23}, {something: "bar", whatever, 32})

jQuery 回调被声明为只有一个参数,它分配给假 XHR 对象的“数据”元素。

或者,如果您可以控制 XSLT 代码的功能,您可以让它在到达 jQuery 之前将响应列表包装在一组方括号中:

[{something: "foo", whatever:23}, {something: "bar", whatever, 32}]

如果您的 XSLT 生成了它,它(我希望)可以与 getJSON 一起正常工作。

编辑 好的,我现在明白你的问题了。

您的 JSON 响应在外部对象中包含“R”的多个值。这是行不通的:如果“R”是一个列表,它需要有一个单个值,该值是一个数组。

  {"GSP": ..., "R":[{"U": ... }, {"U": ... }, {"U": ...}], ...}

关于javascript - jQuery .getJSON() 不解析所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2867606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com