在函数内部将JavaScript调用到JavaScript文件中时出现AJAX错误

时间:2015-07-16 18:54:50

标签: javascript jquery ajax

我在使用JavaScript时遇到了一个奇怪的错误。

我的项目中有一个文件add_account.js,当我的AJAX函数在函数内部时,它会抛出JQuery错误。

当我使用像猎犬和打字头这样的组件时会出现同样的问题。

顺便说一句,它甚至不会抛出AjaxSetup设置的错误。它停止并且没有警报。

错误:  TypeError:e未定义      setRequestHeader:功能(E,T)        {var n = e.toLowerCase(); return x ||(e = v [n] = v [n] ...         jquery -.... min.js(第5行,第11629行)

var testAjaxRun = function(){

$.ajaxSetup({
    error: function(jqXHR, exception) {
        if (jqXHR.status === 0) {
            alert('Not connect.\n Verify Network.');
        } else if (jqXHR.status == 404) {
            alert('Requested page not found. [404]');
        } else if (jqXHR.status == 500) {
            alert('Internal Server Error [500].');
        } else if (exception === 'parsererror') {
            alert('Requested JSON parse failed.');
        } else if (exception === 'timeout') {
            alert('Time out error.');
        } else if (exception === 'abort') {
            alert('Ajax request aborted.');
        } else {
            alert('Uncaught Error.\n' + jqXHR.responseText);
        }
    }
});

$.ajax({
          type: "GET",
          dataType: "json",
          url: "../controllers/fde.php", 
          success: function(data) {
             alert('success');
              return data;
          }
        });
 //...

}
// outside function and in the end of file

 $(document).ready(function() {
  testAjaxRun();
});

如果我将AJAX指令移除到外部函数,它可以正常工作。

错误:  TypeError:e未定义      setRequestHeader:功能(E,T)        {var n = e.toLowerCase(); return x ||(e = v [n] = v [n] ...         jquery -.... min.js(第5行,第11629行)

知道这个问题吗?脚本中的所有其余内容都完美无缺。

这是我从Java迁移到PHP的项目。 Java项目中的javascript文件也能正常工作。

1 个答案:

答案 0 :(得分:0)

民间,

我发现了问题。实际上javascript没有任何问题。

问题是该项目有另一个file.js有这个指令搞砸了我的ajax调用。

然后我评论了_jquery.init并且一切正常。两个晚上没有睡觉和测试所有其他事情我得到了错误。 :)

_jquery.init()

    _jquery = {
        init: function () {
             $(document).ajaxSend(function (e, xhr, options) {
             xhr.setRequestHeader(sync.csrfHeader, sync.csrf);
    });
   }   };

Java项目可能正在处理这个领域,但我现在还不需要它。