2011-02-10 66 views
0

我有一个文件中的下列信息:的getJSON问题

{"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正在调用info,并使用firebug,我可以看到th e参数应该在script.php上,尽管响应和html都是空白的。

任何建议,以使这项工作从subdomain.site.com?

谢谢。

回答

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回调。 ?表明它可以制作自己的唯一功能标识符,它映射到您的success函数。

+0

那么如何flickr使用getJSON的http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=? – Latox 2011-02-10 16:47:50