【发布时间】:2013-11-19 06:04:23
【问题描述】:
我有以下代码试图评估从 HTTPS URL 返回的一些 Javascript。我在本地运行代码,在 localhost:8080 但 ajax 请求没有返回脚本,它返回为未定义。
$.ajax({
crossDomain: true,
dataType: 'script',
url: 'https://mysite.io/live?action=isAvailable',
success: init,
error: function (jqXHR, textStatus, msg) {
failure();
},
timeout: 2000,
cache: false
});
function init(data) {
var isAvailable = undefined;
eval(data);
if (isAvailable) {
chatAvailable();
} else {
chatUnavailable();
}
}
这是我在 Chrome 中访问 URL 时的响应: [https://mysite.io/live?action=isAvailable]:
响应标头: HTTP/1.1 200 正常 内容语言:en-US 内容类型:文本/javascript;charset=UTF-8 日期:2013 年 11 月 19 日星期二 05:59:25 GMT p3p: CP="NON CUR OTPi OUR NOR UNI" x-旧内容长度:23 传输编码:分块
响应正文: var isAvailable = true;
当我在 [http://localhost:8080] 的本地计算机上运行此代码时,任何想法为什么这不起作用?
【问题讨论】:
-
网址不工作超时
-
现代浏览器(例如 chrome)不再允许跨站点 ajax 调用。基本上域必须匹配。几个解决方案:1.传递一个标头,上面写着允许某些域上的跨站点脚本,2.使用 jsonp
-
为什么不直接动态插入一个脚本标签,让浏览器为你加载它,为你执行它并告诉你什么时候完成呢?
$.getScript()可能对你有用。
标签: javascript jquery ajax