使用require.js进行跨域调用时出现问题?

时间:2013-01-05 15:54:35

标签: javascript jquery requirejs cors

我想从windows azure blob(由我自己)托管的html文件中加载一个HTML div到MVC视图中,该视图也托管在windows azure web角色上(blob和web角色都归我所有)

我尝试使用jquery.load()但它遇到了跨域问题,窗口azure blob不允许更改CORS策略。接下来,我尝试使用Require.JsText.Js来实现此跨域加载。 来自Text.Js文档:

  

Text插件确定资源请求在另一个域上,它将尝试使用脚本标记访问资源的“.js”版本。跨域允许脚本标记GET请求。 .js版本的资源应该只是一个带有define()调用的脚本,它返回模块值的字符串。

我使用require.js进行跨域调用的js代码是:

require(["text!http://xxxxx.blob.core.windows.net/xxx/File"],
 function (html) {
   alert(html);
 }
);

现在我遇到的问题是文件的.js版本是由插件(通过使用chrome检查器确认)成功加载的,但在回调时我试图访问文本内容该文件,它显示我未定义。我在这里做错了,为什么回调没有文字内容?有人可以帮我解决这个问题吗?如果这是不可解决的,我可以通过其他方式来实现这种跨域加载。

我对require.js文档的理解是,跨域调用可以通过调用javascript版本的资源来完成。

1 个答案:

答案 0 :(得分:1)

尝试define

define(["text!http://xxxxx.blob.core.windows.net/xxx/File"], function (html) {
   return {
     template: html;
   }:
 }
);