jQuery $.get 在处理错误时返回白色错误页
jQuery $.get returns white error page when handling errors
当我请求一个页面时,下面的代码给了我这样的错误,它返回404。相反,它应该发出警报。奇怪的是,它只在已 ajaxed 的链接上执行此操作,在不更新/更改的链接上工作正常。
('.page-wrap').append('<img src="img/graphics/ajax-loader.gif" class="ajax-loader" />');
var target = $('section.content'),
siteURL = 'http://' + top.location.host.toString(),
internalLinks = $("a[href^='"+siteURL+"'], a[href^='/'], a[href^='./'], a[href^='../'], a[href^='#']"),
links = $('a'),
URL,
el,
mainContent,
headContent,
headClasses,
pageName,
ajaxSpinner = $('.ajax-loader');
internalLinks.click(function(e) {
el = $(this);
URL = el.attr('href');
$('.current_page_item').removeClass('current_page_item');
el.addClass("current_link").parent().addClass("current_page_item");
ajaxLoader(URL, false);
e.preventDefault();
});
function ajaxLoader(location, isHistory) {
$("html, body").animate({ scrollTop: "0px" });
ajaxSpinner.show();
$('.page-wrap').css('opacity', '0.5}');
// Load New Page
$.get(location, function(data) {
mainContent = $('section.content', data).html();
headContent = $('.feature-content', data).html();
pageName = $('.page-name', data).html();
headClasses = $('header', data).attr('class');
$('section.content').html(mainContent);
$('.page-name').html(pageName);
$('.feature-content').html(headContent);
if (headClasses) {
$('header').attr('class', headClasses);
} else {
$('header').removeClass();
}
if (!isHistory) {
history.pushState(location, '', location);
}
$(resizeHeader);
ajaxSpinner.fadeOut();
}).error(function() {
alert('woops'); // or whatever
});
}
w.bind('popstate', function(event) {
if (event.originalEvent.state !== null ) {
ajaxLoader(event.originalEvent.state, true);
}
});
第一个想法
- 是否可能是
成功处理程序代码中的某些内容导致某种错误?就像第一次成功返回的任何 html 的注入会导致脚本第二次失败一样?
你认为你选择的Fiddler/Firebug/F12开发人员工具是什么 - 你正在使用其中一个,对吧?:)密切关注任何控制台错误...
第二个想法
你使用的是哪个jQuery版本?
我已经用 jq 1.8.2 对此进行了测试,错误处理程序对我来说工作得很好,但如果这是一个 JSONP 请求,它不会触发 error() 函数。我接受了您的代码的要点:
$.get(
"404MeBaby.html", function (data) {
$(".result").html(data);
console.log(data);
}
).error(
function (x) {
console.log("well that didn't go so well...");
});
从 API :
从 jQuery 1.5 开始,成功回调函数也传递了一个 "jqXHR"对象(在jQuery 1.4中,它被传递了XMLHttpRequest 对象)。但是,由于 JSONP 和跨域 GET 请求不使用 XHR,在这些情况下,jqXHR 和 textStatus 参数传递给 成功回调未定义。
您可以尝试改用$.ajax
,因为它提供了更多的控制。或者,您可以设置 jQuery 全局 ajax 选项,如下所示,这些选项将影响所有 $.get 调用,但请记住 JSONP 的诅咒,如果相关的话!
相关文章:
- CKFinder 3为所选文件返回错误的URL
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 用于查询错误转换的角度资源返回列表
- 如何解决“;错误所请求的URL返回500-内部服务器错误”;
- WebView返回错误的window.innerHeight
- Javascript表单验证:表单在错误返回时提交:
- 谷歌地图上的常量错误返回maxZoomService.getMaxZoomAtLatLng()
- Jquery .ajax POST 函数错误返回 asp.net MVC.
- happy 不会从 Boom 错误返回数据属性
- 操作结果在 ajax 调用中作为错误返回
- 我得到了错误“返回绑定”.PBKDF2(密码、盐、迭代、keylen、回调);^ TypeError: Not a bu
- 节点解析错误:返回时意外的令牌
- Bluebird承诺库的结果作为错误返回
- Jquery, php ajax post 500内部服务器错误返回
- 未定义的索引问题和错误返回
- 未从json文件中导入数据:Unhandled rejection错误返回
- Jquery错误返回bool值
- 表单提交后重新加载页面,尽管没有验证和错误返回
- 使用POST方法的AJAX函数会创建以下错误.错误:返回状态码414请求uri太大