0

Angularjs,angular-1.2.0-rc.2

$http.get("gridData.json")
        .success(function(data, status, headers, config){
            angular.extend($scope.model.entities, data.entities);
        })
        .error(function(data, status, headers, config){
            alert("x");
        });

当从服务器加载页面时,或者使用 firefox 或 chrome 在本地磁盘上运行页面时,此代码运行得非常好。但是在 IE9 中从磁盘加载页面时(在其他 IE 版本中未测试),它总是进入错误功能。调试时,发生错误时,数据,状态,标题都是未定义的,除了配置有内容。

有人知道吗?有什么解决办法吗?

4

1 回答 1

2

这是由于相同的来源政策您会在 chrome 中看到相同的错误。Chrome 和 IE 不允许本地 ajax 请求。有一些方法可以做到这一点,例如 chrome 你必须用一些特殊的标志来启动它

http://joshuamcginnis.com/2011/02/28/how-to-disable-same-origin-policy-in-chrome/

C:\Users\YOUR_USER\AppData\Local\Google\Chrome\Application\chrome.exe --allow-file-access-from-files --disable-web-security

在 ie 中,您可以将安全设置减少到最低限度。

还有其他解决方案,例如 jQuery $.ajax 作为本地 HTML 文件运行,避免 SOP(同源策略)

使用 jquery 的

$.support.cors = true;

另一种解决方案
尝试将 json 数据放入 js 文件或您的服务器中,这样您就不必对本地文件执行任何 ajax 请求

其他来源:
规避同源策略的方法
http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/

于 2013-09-07T06:48:01.577 回答