( 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
当我直接进入时,我发送的网址会返回正确的数据。
答案 0 :(得分:1)
您是否尝试在其他服务器上访问JSON?如果是这样,您需要使用某种服务器端脚本在自己的服务器上加载它,并使用.getJSON
访问它。 Google Shopping Search doesn't appear to offer JSON-P
如果您可以编写PHP页面或其他服务器端语言it's trivial to get and return the external JSON,它现在位于自己的服务器上,可以使用.getJSON
轻松加载
答案 1 :(得分: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跨域支持。
答案 2 :(得分:0)
您需要使用JSONP从外部源传输数据。 Google API支持此功能,因此就您的代码而言,这就像将&callback=xyz
附加到您的网址一样简单,其中xyz
是外部服务器将您的代码包装在其中的一些功能。
https://www.googleapis.com/shopping/search/v1/public/products?key={key}&country={country}&q={query}&alt=json&callback=xyz
jQuery会自动查找名为?
的回调,因此您可以使用callback=?
或通过向您的AJAX请求参数添加jsonp: xyz
来指定自定义名称。