3

jQueryの.getJSON関数を使用して、Google検索アプライアンスからの一連の検索結果を解析しています。検索アプライアンスには、結果をJSONデータとして返すxsltスタイルシートがあります。これは、JSONLintとCuriousConceptのJSONフォーマッターの両方で検証しました。

FireBugによると、完全な結果セットがXMLHTTPRequestから返されますが、(jquery.dump.jsを使用して)データをダンプしようとしましたが、最初の結果のみが解析されます。すべてのGoogle検索プロトコルを正常に取得しますが、1つの「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

すべての「R」オブジェクトが兄弟である場合でも、jQueryは最初の「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コールバックは、引数が1つだけであると宣言されており、偽のXHRオブジェクトの「data」要素に割り当てられます。

または、XSLTコードの機能を制御できる場合は、jQueryに到達する前に、応答のリストを角かっこで囲むようにすることもできます。

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

XSLTがそれを生成した場合、getJSONで問題なく動作します(私は願っています)。

編集OK、あなたの問題がわかりました。

JSON応答には、外部オブジェクト内の「R」の複数の値が含まれています。これは機能しません。「R」がリストの場合、単一の値が必要であり、その値は配列です。

  {"GSP": ..., "R":[{"U": ... }, {"U": ... }, {"U": ...}], ...}
于 2010-05-19T17:10:31.460 に答える
0
于 2010-05-19T17:49:04.910 に答える