Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了我可以在Angular JS promise api中使用jQuery.ajax吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_801_0@
@H_801_0@
我在角度服务中有一个ajax函数,它根据后端服务检查用户的凭据.我已经简化了这个电话了.当我使用$http服务发出 AJAX请求时,promise API可以正常工作:

function isOnline(){
    return $http.get(constants.dataUrl)
           .success(function(){return})
           .error(function(){return;});
}
function checkCredentials(){
    var online = isOnline();
    var checkCreds = online.then(function(){
        alert("Get succeeded");
    },function(responsE){
        alert("Get did not succeed");
    });
    return checkCreds;
}

我看到当时定义的函数调用了.当我使用jQuery ajax方法时,解析和延迟方法似乎没有传播并在online.then中触发正确的方法.以下代码不起作用:

function isOnline(){
    var defer = $q.defer();

    $.ajax({
      url: constants.dataUrl,dataType: 'json',beforeSend: function (xhr) {
        xhr.setrequestHeader('Authorization',basicAuthenticationToken());
      },error: function (xhr,ajaxOptions,thrownerror) {
        alert("I am not online");
        defer.reject("I am not online");
      },success: function (data) {
        alert("I am online");
        defer.resolve(data);
      }
    });

    return defer.promise;
}
function checkCredentials(){
    var online = isOnline();
    var checkCreds = online.then(function(){
        alert("Get succeeded");
    },function(responsE){
        alert("Get did not succeed");
    });
    return checkCreds;
}

我可以不使用promise API和普通的jQuery ajax方法吗?我想替换这些调用的原因与一个复杂的PhoneGap场景有关,它似乎不适用于Angular $http.

解决方法

Angularjs需要被告知其外部发生的变化.由于ajax事件由jquery处理,因此您需要进行应用.取决于函数的位置(可能是$scope或$rootScopE)

defer.reject("I am not online");
$scope.$apply();

....
defer.resolve(data);
$scope.$apply();

这将让角知道重新处理自己.以下是关于它的文档:http://docs.angularjs.org/api/ng.$rootScope.Scope#$apply

您可以在任何时候使用此功能,只需要在角度以外编写javascript,但需要将其连接到它.

@H_801_0@

大佬总结

以上是大佬教程为你收集整理的我可以在Angular JS promise api中使用jQuery.ajax吗?全部内容,希望文章能够帮你解决我可以在Angular JS promise api中使用jQuery.ajax吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:ajaxangularapijqueryjquery.ajaxjspromise使用可以
猜你在找的Angularjs相关文章
其他相关热搜词更多
phpJavaPython程序员load如何string使用参数jquery开发安装listlinuxiosandroid工具javascriptcap