我有以下内容:
$.get('path/to/file.js', function(data) {
//this callback function never runs!
});
为什么不调用回调? :S
答案 0 :(得分:2)
jQuery.get(url [,data] [,成功(data,textStatus,jqXHR)] [,dataType])
jQuery将404
(Not Found)响应视为error
。通常,只有200
(确定)或各种3xx
响应被视为“成功。”
使用jQuery 1.5及更高版本,从jQuery的Ajax方法返回的jqXHR对象实现Deferred
objects,因此您可以使用.fail()
添加这样的回调。
$.get(...).fail(function (xhr, textStatus, errorThrown) {
console.log('Ajax error', textStatus, errorThrown);
});
如果您想知道为什么它会获得404
,那取决于实际使用的路径。但是,样本路径将相对于当前页面的地址。
http://yourdomain.tld/foo/bar/page + path/to/file.js =
http://yourdomain.tld/foo/bar/path/to/file.js
您可以尝试从主机之后的/
开始指定相对根路径,这将使用它作为一个共同的起点:
$.get('/path/to/file.js', ...);
http://yourdomain.tld/foo/bar/page + /path/to/file.js =
http://yourdomain.tld/path/to/file.js