2
( function( $ ) {                

    function CleanQueryString( query )
    {
        return encodeURI( query ); 
    };

    function ConcatData( settings )
    {                               
        settings.concatUrl = settings.googleUrl;
        settings.concatUrl = settings.concatUrl.replace( "{key}", settings.googleApiKey );
        settings.concatUrl = settings.concatUrl.replace( "{country}", settings.country );     
        settings.concatUrl = settings.concatUrl.replace( "{query}", settings.cleanQuery );  
    };

    $.fn.GoogleSearchResult = function( options ) {  

        var settings = $.extend( {
            query: null,
            googleApiKey: "myapikey",
            googleUrl: "https://www.googleapis.com/shopping/search/v1/public/products?key={key}&country={country}&q={query}&alt=json",
            concatUrl: "",
            country: "UK",
            cleanQuery: ""
        }, options);

        return this.each( function() {  
            if( settings.query )
            {   
                var $t = $(this);

                settings.cleanQuery = CleanQueryString( settings.query );
                ConcatData( settings );    
                alert( settings.concatUrl ); // This alerts the correct url and I've checked that it returns json

                $.getJSON( settings.concatUrl, function( data ) {  
                    alert("hi"); // This never alerts                    
                    $t.html( data );                
                });
            }

            return false;    
        } );     
    };  
} )( jQuery );

$.getJSON を機能させることができません..何も返さない理由:

https://developers.google.com/shopping-search/v1/getting_started

送信した URL に直接アクセスすると、正しいデータが返されます。

4

3 に答える 3

1

別のサーバーでJSONにアクセスしようとしていますか?その場合は、ある種のサーバー側スクリプトを使用して独自のサーバーにロードし、を使用してそれにアクセスする必要があります.getJSONGoogleショッピング検索はJSON-Pを提供していないようです。

PHPページまたはその他のサーバー側言語を記述できる場合は、外部JSONを取得して返すのは簡単です。これは、独自のサーバー上にあり、を使用して簡単に読み込むことができます.getJSON

于 2013-02-13T14:31:35.260 に答える
0
jQuery.support.cors = true;
$.getJSON( settings.concatUrl, function( data ) {  
    alert(data);                    
    $t.html( data );                
}).error(function(xhr, status, error) { alert("error" + status +" " + error); }) ;

Jquery クロス ドメイン サポートは、この設定で有効にできます。

于 2013-02-13T14:33:57.830 に答える
0

外部ソースからデータを転送するには、JSONP を使用する必要があります。Google API はこれをサポートしているため、コードに関しては、外部サーバーがコードをラップする関数を&callback=xyzURL に追加するのと同じくらい簡単です。xyz

https://www.googleapis.com/shopping/search/v1/public/products?key={key}&country={country}&q={query}&alt=json&callback=xyz

jQuery は という名前のコールバックを自動的に検索するため、AJAX リクエスト パラメータに追加することでカスタム名を?使用または指定できます。callback=?jsonp: xyz

于 2013-02-13T14:36:03.827 に答える