Jquery ajax无法加载脚本文件

时间:2017-05-01 17:17:35

标签: javascript jquery ajax

jQuery.ajax({
    async: false,
    url: url,
    dataType: dataType,
    crossDomain: false
}).done(function(data) {
    callback(null, data);
}).fail(function(jqXHR, textStatus, errorThrown) {
    if (jqXHR.statusText === 'OK') {
        console.log('Unable to load resource:', url, 'error:', errorThrown);
    }
    callback(errorThrown)
});

对于上面的ajax请求调用,我面临一些错误

错误1: 预检中的Access-Control-Allow-Header不允许使用请求标题字段X-Requested-With

错误2: DOMException:无法执行'发送' on' XMLHttpRequest':无法加载

3 个答案:

答案 0 :(得分:0)

您尝试访问的服务器阻止浏览器通过其HTTP访问控制策略(CORS)完成请求。特别是“Access-Control-Allow-Headers”。

您需要:

  • 将服务器配置为允许“X-Requested-With”标头,或者:
  • 从jQuery的AJAX调用中删除“X-Requested-With”

答案 1 :(得分:0)

  1. 避免同步请求。它们已被弃用。请阅读MDN上的这篇文章。

  2. 您正面临所有网络浏览器实施的同源政策。由于 CORS 显然不适合您,您应该依赖JSONP

  3. 如果您要加载脚本,最好使用jQuery.getScript()

答案 2 :(得分:0)

当我们使用dataType ='script'对js文件进行ajax调用时,我找到了根本原因

当我们提到dataType ='script'时,它会破坏脚本数据并返回成功回调中的数据。 假设如果js文件在eval(js)期间出现任何错误,它将发现错误并且它将在成功回调中返回undefined。