在ajax完成或成功后的下面代码中$(".cdmodels").append(result);
没有执行,但是执行了两个下一行。我已经检查了不同的方式,但它没有解决。请帮帮我。
$('.load-more').on('click', function (e) {
e.preventDefault();
var count = $(this).attr('data-value');
var btn = $(this).button('loading');
$.ajax({
url: "@Url.Action(MVC.Library.Index())",
data: { count: count },
dataType: 'json',
async: true,
method: 'POST',
complete: function (result) {
$(".cdmodels").append(result);
btn.button('reset');
btn.attr("data-value", parseInt(count) + 1);
}
});
});
更新
浏览器调试:
答案 0 :(得分:0)
您是否使用try / catch块检查过它?
...
complete: function (result) {
try{
$(".cdmodels").append(result);
btn.button('reset');
btn.attr("data-value", parseInt(count) + 1);
}catch(e) {
console.log("Something went wrong! Watch for 'e' and 'result'");
debugger;
}
}
...
从开放的devtools开始。
答案 1 :(得分:0)
complete
回调接收具有多个属性的对象。您无法直接使用它来更新DOM。如果您愿意,可以使用responseText
属性。
这应该有用。
$(".cdmodels").append(result.responseText);
甚至更好,使用done()
回调
$.ajax({
url: "@Url.Action("Index")",
data: { count: 2 },
method: 'POST'
}).done(function (res) {
console.log('done');
$(".cdmodels").append(res);
});
从jQuery 3.0开始,jqXHR.success()
,error()
和complete()
回调将被删除。您应该使用jqXHR.done()
,fail()
和always()
代替。
答案 2 :(得分:0)
通常在使用AJAX调用时,如果遇到困难,应调试如下所示
记录回复。 console.log(response)
检查回复类型。 console.log(Object.prototype.toString.call(response)
$('.load-more').on('click', function (e) {
e.preventDefault();
var count = $(this).attr('data-value');
var btn = $(this).button('loading');
$.ajax({
url: "@Url.Action(MVC.Library.Index())",
data: { count: count },
dataType: 'json',
async: true,
method: 'POST',
complete: function (result) {
// In your case it should be result.responseText
$(".cdmodels").append(result.responseText);
btn.button('reset');
btn.attr("data-value", parseInt(count) + 1);
}
});
});