2

Google の Suggest API からデータを取得し、自分のページに表示したい(おそらく追加機能を使用)。JSON の解析には自信がありますが、XML の解析には自信がありません。私が見る限り、Google は JSON でこの API を提供していません。

これどうやってするの?または、JSON でこの API にアクセスする方法を知っている人はいますか? 誰かがそれをしたら、それは素晴らしいでしょう!

API アドレスは次のとおりです: http://google.com/complete/search?q=google&output=toolbar

私の現在のコードは次のとおりです。

        $.ajax({
            type: "GET",
            url: "http://google.com/complete/search?q=google&output=toolbar",
            dataType: "xml",
            crossDomain: true,
            xhrFields: { withCredentials: true },
            success: function(xml) {
                $(xml).find('toplevel').each(function(){
                    var title = $(this).find('suggestion').text();
                    $('<b>'+title+'</b>').appendTo('#page-wrap');
                });
            }
        });

そして、私が得ているエラーは次のとおりです。XMLHttpRequest cannot load http://google.com/complete/search?q=wixiy&output=toolbar. Origin is not allowed by Access-Control-Allow-Origin.

4

3 に答える 3

1

確かに、jQueryはXMLを解析できます。$.ajaxドキュメントページをチェックしてください-それは言います

コンバーター(1.5を追加) dataTypeからdataTypeへのコンバーターのマップ。各コンバーターの値は、応答の変換された値を返す関数です。

したがって、ajax呼び出しはその設定を設定する必要があります。

$.ajax({ url: "apiUrl", converters: "text xml" });
于 2012-11-26T19:01:33.037 に答える
0

DomParserhttps://developer.mozilla.org/en-US/docs/DOM/DOMParserを使用でき ます

var parser = new DOMParser();
var doc = parser.parseFromString(stringContainingXMLSource, "application/xml");
于 2012-11-26T19:03:08.503 に答える
0

API は をサポートしていないためJSON、デフォルトではクロスドメイン リクエストが許可されないため、javascript だけでは実行できません。PHPそのため、Google からの xml リクエストを実行して xml をユーザーに渡す、ファイルのような中間のサーバー側ページが必要になります。

Javascript

$.ajax({
    type: "GET",
    url: "getData.php?q=google&output=toolbar",
    dataType: "xml",
    success: function(xml){
        $(xml).find("CompleteSuggestion").each(function(){
            var suggestion = $( this ).find( 'suggestion' ).attr( 'data' );
            var num_queries = $( this ).find( 'num_queries' ).attr( 'int' );
            alert( suggestion + ' has ' + num_queries + ' queries.' );
        });
    }
});

PHP (getData.php) - このファイルは同じサーバーにあります

$query = $_GET[ 'q' ];
$out = $_GET[ 'output' ];

header('Content-Type: text/xml');
echo file_get_contents('http://google.com/complete/search?q='.$query.'&output='.$out);

...または、json_encodeJSON をスクリプトに直接送信して、簡単に解析することもできます。

お役に立てれば。

于 2012-11-26T19:25:58.480 に答える