我有这个jquery自动完成代码。一切都工作正常数据加载等。成功工作。但是当我有错误...错误处理不能在下面的代码。
$("#autocomplete").on("filterablebeforefilter", function (e, data) {
if (value && value.length > 0) {
//$ul.listview("refresh");
$('.ui-responsive-panel').enhanceWithin();
$.ajax({
type: "GET",
url: "http://domain.com/food.php",
dataType: "jsonp",
crossDomain: true,
data: $(this).serialize(),
success: function (data) {
alert("success");
},
error: function () {
alert("an error occurred!");
},
beforeSend: function () {
// This callback function will trigger before data is sent
},
complete: function () {
setTimeout(function () {}, 1);
}
})
.then(function (response) {
$.each(response, function (i, val) {
//do something with data
});
}
});
答案 0 :(得分:1)
正如jQuery doc声明jQuery.ajax错误处理函数:
注意:不会为跨域脚本和跨域JSONP请求调用此处理程序。
它与JSONP的技术有关,其中实际请求被注入<script>
标记。因此,包含ajax错误事件的标准jqXHR对象不可用。有一些插件作为可用的解决方法。这个插件和解决方案用于处理网络超时,例如,在this和this stackoverflow问题中。
答案 1 :(得分:0)
尝试处理then
中的错误(或使用done()
和fail()
)
$.ajax({
//... code omitted ...
})
.then(
function (response) {
$.each(response, function (i, val) {
//do something with data
});
},
function (error) {
//do something with error
}
});