2011-02-10 97 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