3

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

根据 FireBug 的说法,完整的结果集是从 XMLHTTPRequest 返回的,但我尝试转储数据(使用 jquery.dump.js),它只解析回第一个结果。它确实成功地获得了所有谷歌搜索协议的东西,但它只看到一个“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”对象都是兄弟对象。

4

2 回答 2

2

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

换句话说,如果 API 返回

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

那么响应脚本块中的最终结果是:

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": ...}], ...}
于 2010-05-19T17:10:31.460 回答
0
于 2010-05-19T17:49:04.910 回答