我在AngularJS工作,我有一个服务,其中post方法是:
var xhrService = {
post: function(url, data) {
xhr = new XMLHttpRequest();
xhr.open("POST", url);
xhr.send(data);
return xhr;
}}
我希望能够像内置(有角度)$http服务一样使用此服务,并取得成功。错误方法。 如果没有使用其他库,那将是非常好的。
答案 0 :(得分:2)
您需要至少$q
次服务才能创建deferred
,并从该函数返回deferred.promise
。然后根据结果解析或拒绝它。
var deferred = $q.defer();
var req = new XMLHttpRequest();
req.open('GET', url);
req.onload = function() {
if (req.status == 200) {
deferred.resolve(req.response);
}
else {
deferred.reject(req.statusText);
}
}
req.onerror = function() {
deferred.reject('error');
};
req.send();
return deferred.promise;