Angularjs $ http从IE9中的本地磁盘问题加载数据

时间:2013-09-07 04:07:23

标签: javascript internet-explorer angularjs

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版本中测试),它总是转到错误功能。在调试时,当发生错误时,数据,状态,标题都是未定义的,除了config有内容。

任何人都有任何想法?可以是任何解决方案吗?

1 个答案:

答案 0 :(得分:2)

归因于same origin policy您会在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

并且即可以将安全设置降低到最低限度。

还有其他解决方案 喜欢 jQuery $.ajax run as a local HTML file avoiding SOP (same origin policy)

使用jquery的

$.support.cors = true;

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

其他来源:
Ways to circumvent the same-origin policy
http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/