ajax完成或成功后,某些命令不会执行

时间:2017-02-07 12:54:41

标签: javascript jquery ajax asp.net-mvc

在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);

        }
    });
});

更新

浏览器调试:

enter image description here

3 个答案:

答案 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);

        }
    });
});