我在文件中有以下信息:
{"Morans Crossing":"Morans Crossing, NSW (2550)","Morangarell":"Morangarell, NSW (2666)"}
例如,文件名为www.site.com/script.php
我是从subdomain.site.com/script.js
我正在使用以下JS:
function lookup(inputString) {
if(inputString.length == 0) {
// Hide the suggestion box.
$('#suggestions').hide();
} else {
$.getJSON("http://www.site.com/script.php",{queryString:inputString},function(data) {
if(data.length > 0){
var reply = "";
$.each(data, function(key,val){
reply += "<li onClick=\"fill('"+key+"');\">"+val+"</li>";
});
$('#suggestions').show();
$('#autoSuggestionsList').html(reply);
}
});
}
}
JS正在调用信息,使用firebug,我可以看到params在script.php上应该是什么,尽管响应和html是空白的。
有任何建议可以从subdomain.site.com获取此功能吗?
谢谢。
答案 0 :(得分:0)
由于Same-Origin Policy,这是不可能的。这是一个安全概念,仅允许请求与源相同的主机。有一个名为JSONP
的解决方法。在这里,客户端创建一个新的脚本标记以包含来自外部主机的JavaScript代码,通常您传递callback
参数以便调用代码。服务器必须支持JSONP
。
使用Flickr
$.ajax({
type: "GET",
url: "http://www.flickr.com/services/feeds/photos_public.gne?format=json&jsoncallback=?",
dataType: "jsonp",
success: function(json) {
// do stuff
}
});
注意网址末尾的&jsoncallback=?
。这就是我所说的JSONP回调。 ?
表示jQuery可以创建自己独特的函数标识符,并将其映射到success
函数。