我有一个very simple test page使用jQuery的$ .getJSON和$ .ajax方法使用XHR请求。同一页面在某些情况下有效,而在其他情况下则无效。特别是,它在Ubuntu上的Chrome中不起作用。
我正在使用Chrome 5.0.342.7测试版测试Ubuntu 9.10,使用Chrome 5.0.307.9 beta测试Mac OSX 10.6.2。
可以从这里下载tar / gzip文件中的一小组3个文件: http://issues.tauren.com/testjson/testjson.tgz
如果有效,Chrome控制台会说:
XHR finished loading: "http://issues.tauren.com/testjson/data.json".
index.html:16Using getJSON
index.html:21
Object
result: "success"
__proto__: Object
index.html:22success
XHR finished loading: "http://issues.tauren.com/testjson/data.json".
index.html:29Using ajax with json dataType
index.html:34
Object
result: "success"
__proto__: Object
index.html:35success
XHR finished loading: "http://issues.tauren.com/testjson/data.json".
index.html:46Using ajax with text dataType
index.html:51{"result":"success"}
index.html:52undefined
如果它不起作用,Chrome控制台将显示以下内容:
index.html:16Using getJSON
index.html:21null
index.html:22Uncaught TypeError: Cannot read property 'result' of null
index.html:29Using ajax with json dataType
index.html:34null
index.html:35Uncaught TypeError: Cannot read property 'result' of null
index.html:46Using ajax with text dataType
index.html:51
index.html:52undefined
请注意,尽管运行了成功处理程序,它甚至不会显示XHR请求。我发誓以前在Ubuntu / Chrome上工作过,我担心有些事搞砸了。我已经卸载并重新安装了Chrome,但这没有帮助。
有人可以在您的Ubuntu系统上本地试用,并告诉我您是否有任何问题?请注意,它似乎在Firefox中运行良好。
答案 0 :(得分:38)
另一种方法是在目录上启动本地HTTP服务器。在安装了Python的Ubuntu和MacO上,它是一个单行的。
转到包含您的网络文件的目录,然后:
python -m SimpleHTTPServer
然后使用任何网络浏览器连接到http://localhost:8000/index.html以测试您的网页。
答案 1 :(得分:30)
答案 2 :(得分:13)
在Windows上,Chrome可能会安装在AppData文件夹中:
“C:\用户\\应用程序数据\本地\谷歌\铬\应用程序”
在执行命令之前,请确保所有Chrome窗口都已关闭,否则无法正常运行。或者,命令行参数无效。
chrome.exe --allow-file-access-from-files
答案 3 :(得分:3)
您可以将json放到js文件中并将其保存到全局变量中。它不是异步的,但可以提供帮助。
答案 4 :(得分:1)
@Mike在Mac上,在终端输入:
open -b com.google.chrome --args --disable-web-security
答案 5 :(得分:1)
解决此问题的另一种方法是利用Flash Player的Local Only安全沙箱和ExternalInterface方法。可以使用本地安全沙箱发布Flash应用程序的JavaScript请求,以从硬盘驱动器加载文件,Flash可以通过Flash的ExternalInterface类将数据传递回JavaScript。我已经在Chrome,FF和IE9中对此进行了测试,效果很好。如果有人有兴趣,我很乐意分享这些代码。
编辑:我已经开始实施Google代码(具有讽刺意味的?)项目:http://code.google.com/p/flash-loader/
答案 6 :(得分:1)
此代码与sheet.jsonlocally一起使用,浏览器同步作为本地服务器。 - 但是当我在远程服务器上时,我使用Chrome获得了一张404的sheet.json文件。 它在Safari和Firefox中运行良好。 - 将名称sheet.json更改为sheet.JSON。然后它在远程服务器上工作。 其他人有这种经历吗?
getthejason = function(){
var dataurl = 'data/sheet.JSON';
var xhr = new XMLHttpRequest();
xhr.open('GET', dataurl, true);
xhr.responseType = 'text';
xhr.send();
console.log('getthejason!');
xhr.onload = function() {
.....
}