从包含的JavaScript文件中检测404错误

从包含的JavaScript文件中检测404错误,javascript,include,http-status-code-404,jsonp,Javascript,Include,Http Status Code 404,Jsonp,我正在使用JavaScript进行跨域JSON(p)调用,向DOM添加一个标记,其中包含我希望作为src包含的URL。正在加载的脚本有一个回调函数,该回调函数在我的页面上调用一个函数,我想要的数据作为参数返回给函数 不过,有两个陷阱: 有时JSONP页面将返回400或404错误 可以在同一页面上多次请求相同的JSONP文件(每次返回不同的数据) 因此,我需要检测回调函数何时未被激发(这将表明JSONP文件返回了一个错误),但我还需要考虑一个事实,即同一个文件可以被请求两次。本质上,我需要在加载页

我正在使用JavaScript进行跨域JSON(p)调用,向DOM添加一个
标记,其中包含我希望作为
src
包含的URL。正在加载的脚本有一个回调函数,该回调函数在我的页面上调用一个函数,我想要的数据作为参数返回给函数

不过,有两个陷阱:

  • 有时JSONP页面将返回400或404错误
  • 可以在同一页面上多次请求相同的JSONP文件(每次返回不同的数据)
  • 因此,我需要检测回调函数何时未被激发(这将表明JSONP文件返回了一个错误),但我还需要考虑一个事实,即同一个文件可以被请求两次。本质上,我需要在加载页面时检测错误,但我必须在其他文件完成加载之前检测错误。是的,文件应该以正确的顺序加载(或返回错误)

    一个(低效)解决方案:

    我可以为每个不同的文件加载创建一组不同的函数(例如callbackFunction0、callbackFunction1等)。这样,我就可以简单地确定其中一个函数何时没有启动,并让我的JavaScript停止运行。但是,这将占用大量空间,而且效率低下,因为在同一页面上加载脚本的最长时间内,我必须有一个callbackFunction(虽然这个数字没有确定的值,但是,如果我只执行了15个函数,并且脚本被请求了20次,则会发生错误)

    这有点难以解释,但希望你能理解。谢谢。

    有许多回调函数可供使用

    $.ajax({
          url: "test.html?callback=?",
          dataType: "jsonp",
          success: function(data){
            // your logic
          }
          statusCode: {
            404: function() {
              alert('page not found');
            }
          }
    });
    

    您可以只向callback函数添加一个参数,其中包含脚本的id/编号/位置。比如callbackFunction(1,…其余参数…)。不需要创建新的函数名

    您可以通过将onerror事件附加到script元素来检测错误。
    有点相关:

    为了解决这个问题,我让回调包含一个包含请求号的变量。因此回调可能是
    var requestnumber=0;callbackFunction
    。然后我可以找出哪个请求应用于哪个元素。我以前应该想到这一点。

    我没有使用jQuery(很遗憾)。另外,这是否跨域工作?