【发布时间】:2011-05-09 07:26:28
【问题描述】:
我对 JQuery 和 ajax 有点陌生,所以如果这是一个新手的问题,我很抱歉。
我正在尝试使用本地文件中的 ajax 来访问网络(例如,获取文本文件)。
我没有使用 IIS 或任何东西,我的硬盘驱动器中的简单文件(我需要它保持这种状态)。
在 IE8 和 Chrome(版本 11.0.696.60)上检查过。
这里有一些 javascript 来说明:
// use ajax to load from the web
$("#webText").click(function(){
$.get("http://www.w3schools.com/jquery/demo_ajax_load.txt", function(result){
alert(result);
});
此代码正在尝试从 Web 加载文本文件 - IE 和 chrome 上的操作均失败(无法访问成功函数)。
Chrome 在错误控制台中通知 “XmlHttpRequest 无法加载 _http://www.w3schools.com/jquery/demo_ajax_load.txt: Access-Control-Allow-Origin 不允许Origin null "
// use ajax to load from a local file
$("#localText").click(function(){
$.get("demo_ajax_load.txt", function(result){
alert(result);
});
此代码正在尝试从本地文本文件加载。
IE:操作成功。
Chrome:失败并出现与上述相同的错误。
此时我认为无法从本地文件与网络通信,但后来我遇到了类似的问题:XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin
使用那里给出的示例,我尝试了:
// use ajax to load json object from the web
$("#webJSON").click(function(){
var url = 'http://www.panoramio.com/wapi/data/get_photos?v=1&key=dummykey&tag=test&offset=0&length=20&minx=-30&miny=0&maxx=0&maxy=150';
$.get(url, function(json) {
alert(json.photos[1].photoUrl);
}, "jsonp");
});
这段代码在两种浏览器上都运行良好。很明显,可以从本地文件与 Web 服务进行通信。
有什么想法吗?
顺便说一句 - 我对这方面的 IE 更感兴趣,Chrome 和其他浏览器不是问题。
谢谢。
【问题讨论】:
-
我很困惑 - 你刚刚回答了你自己的问题吗? :-)
-
不,我的意思是——如果某些请求是可能的(如 jsonp),那么其他请求(如简单的文本文件)是否也是可能的?