3

作为 Progressive-Enhancement 的忠实粉丝,我使用 Modernizr 来测试浏览器功能。如何使用 Modernizr 来测试浏览器对 AJAX 的支持(特别是 jQuery 的 AJAX 函数)?

4

3 回答 3

8

你不需要 Modernizer 来测试它,jQuery 已经内置了它。

if (jQuery.support.ajax) {
    alert("Ajax is supported!");
}

虽然我不确定 jQuery$.ajax在不支持时如何处理调用。它要么静默失败,要么触发错误回调。如果它对你很重要,你应该测试它。

于 2012-10-18T18:31:22.693 回答
3

对于它的价值,我已将问题 #734 添加到 Modernizr 以添加 AJAX 测试,开发了测试,创建了一个JSFiddle 来测试,呃,测试......并发起了一个拉取请求(问题 #735)回到维护Modernizr的好人。

相关JS:

Modernizr.addTest('ajax', function() {
    var xhr = new XMLHttpRequest();
    return !!('onreadystatechange' in xhr);
});
于 2012-10-23T15:24:22.670 回答
1

可能与问题相关,也可能不相关,但您可以使用 jquery ajax 的异常处理。要回答 Kevin B. 的问题,不进行任何异常处理,它只会静默失败(回调将不返回任何内容)。因此,如果您希望它显示任何内容,请使用异常处理。

简短的例子:

$.ajax({
type: "POST",
url: "ajax_page.php",
success: function(data, status, xhr) {
// perform operations on success
alert('Success');
},
error: function(xhr, status, error) {
// perform operations on error
alert(xhr.responseText);
}
});
于 2012-10-18T19:44:59.613 回答