Javascript getJson().done()不适用于远程主机
我正在使用phonegap+html5+JS+CSS开发一个移动应用程序。对于这个应用程序,我需要从remotehost加载一个大的JSON(大小为200-500kb)文件,比如“www.mysite.com/file.JSON” 下面是我试图从localhost运行的index.html文件中的代码Javascript getJson().done()不适用于远程主机,javascript,jquery,json,html,getjson,Javascript,Jquery,Json,Html,Getjson,我正在使用phonegap+html5+JS+CSS开发一个移动应用程序。对于这个应用程序,我需要从remotehost加载一个大的JSON(大小为200-500kb)文件,比如“www.mysite.com/file.JSON” 下面是我试图从localhost运行的index.html文件中的代码 <script type="text/javascript"> var myAPI = "http://www.mysite.com/file.json?callback=?
<script type="text/javascript">
var myAPI = "http://www.mysite.com/file.json?callback=?"; //for this one .done() does not execute
// var myAPI = "file.json" //but for this one .done() executes
var json = $.getJSON( myAPI, {
format: "json"
}).done(function( data ) {
/*for remote link nothing inside this done() executes but works for local link*/
$.each( data, function( i, item ) {
$("#someDiv").append("<div>"+item.id+" "+item.name+"</div>")
})
});
</script>
var myAPI=”http://www.mysite.com/file.json?callback=?"; //对于这一个,done()不执行
//var myAPI=“file.json”//但对于这一个,将执行.done()
var json=$.getJSON(myAPI{
格式:“json”
}).done(函数(数据){
/*对于远程链接,此done()中的任何内容都不会执行,但对本地链接有效*/
$。每个(数据、功能(i、项){
$(“#someDiv”).append(“+item.id+”“+item.name+”)
})
});
我使用jquery getJson()和done()在加载完成后显示加载的json数据。但是,当我将file.json文件放在本地目录中时,惟一执行time done()的时间。使用远程链接时,不执行done()。我使用chrome开发工具断点检查了它。没有访问控制允许源错误,file.json已正确加载,我可以从devtool的网络(file.json加载时间)和源(file.json显示在www.mysite.com文件夹)选项卡中保证这一点
任何关于如何使用jquery从远程主机加载json文件的建议。提前感谢。服务器是否正在处理您的.json文件并将其转换为jsonp?如果不是,那么您的服务将不会返回有效的jsonp。JSON!=jsonpdo在没有回调参数的情况下工作(即
myAPI=”http://www.mysite.com/file.json“
)?@bclune否如果没有回调,它将无法工作。然后会导致访问控制允许源错误。@KevinB.json文件是服务器中的静态文件。我没有做任何事情将其转换为jsonp。很抱歉,我可能不理解您的问题(*noob alert)。那么,除非您修改json文件以包含正确的jsonp,否则此请求将无法工作,例如,jsonpCallback(thejsonhere)
您只需创建一个全局函数window.jsonpCallback=function(json){console.log(json);}然后请求脚本$。getScript(“http://www.mysite.com/file.json“”