Jquery Ajax成功不会触发,而是完成事件工作

Jquery Ajax success wont firing instead complete event works

本文关键字:工作 事件 成功 Ajax Jquery      更新时间:2023-09-26

我使用Angular Js与JQuery在一个面条的方式。请看下面的代码

app.controller('ClassController', function ($scope) {
    $scope.ShowHideNoRecords = false;
    var credentials = new Object();
    credentials.SourceName = "###";
    credentials.SourcePassword = "###";
    credentials.UserName = "###";
    credentials.UserPassword = "##";
    credentials.SiteId = [-99];
    var locationIds = [1];
    var startDate = Date.today();
    var endDate = startDate;
    var dto = { credentials: credentials, startDate: startDate, endDate: endDate, locationId: locationIds };
    $.ajax({
        type: "POST",
        url: 'MbApiConnector.asmx/GetAllClasses',
        data: JSON.stringify(dto),
        contentType: "application/json; charset=utf-8",
        dataType: "jsonp",
        success: function (response) {
            alert(response.d);
        },
        complete: function (msg) {
            $scope.$apply(function () {
                $scope.Classes = JSON.parse(JSON.parse(msg.responseText).d);
                if ($scope.Classes.length > 0) {
                    $scope.checkin = function (id) {
                        dto = { credentials: credentials, classId: id };
                        $.ajax({
                            type: "POST",
                            url: 'MbApiConnector.asmx/Checkin',
                            data: JSON.stringify(dto),
                            contentType: "application/json; charset=utf-8",
                            dataType: "jsonp",
                            complete: function (msg) {
                                alert(msg.responseText);
                            }
                        });
                    }
                }
                else {
                    $scope.ShowHideNoRecords = true;
                }
            });
        }
    });
});

这段代码一切正常。我知道把两者混在一起是个坏主意,但我的应用程序已经是用Jquery Ajax开发的,我们正在用Angular JS升级,但改动较少。所以我想出了这个解决方案。无论如何,我的问题是,jquery ajax成功函数没有得到调用。我能够从webservice接收数据,但是在完整的方法中,正如您在上面的代码中看到的那样。

你能解释一下它为什么会这样吗?

可能是Jquery解析失败,结果可能不是JSON格式,尝试使用错误回调函数查找错误。你可以尝试使用dataType: 'json'。错误:function (err) {alert(err)}