加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS ngResource删除不调用回调的事件

发布时间:2020-12-17 07:17:20 所属栏目:安全 来源:网络整理
导读:我有这个代码: dogsResource.delete({id: $stateParams.dogId},angular.noop,function(value,responseHeaders){ //Success console.log(value); console.log(responseHeaders); },function(httpResponse){ //Error console.log(httpResponse); } ); 删除完
我有这个代码:
dogsResource.delete({id: $stateParams.dogId},angular.noop,function(value,responseHeaders){
            //Success
            console.log(value);
            console.log(responseHeaders);
        },function(httpResponse){
            //Error
            console.log(httpResponse);
        }
    );

删除完成后,问题是既没有成功也没有错误被调用.我也尝试过使用一个实例(这意味着使用$delete),但它也没有用.

我尝试用其他方法测试回调,比如get

$scope.dog = dogsResource.get({id: $stateParams.dogId},res){
    console.log(value);
});

它有效.我不知道为什么会这样,因为狗正在从数据库中删除.

谢谢

UPDATE

dogResource代码

// Return the dogs resource
.factory('dogsResource',['$resource',function($resource){
    return $resource("http://localhost:5000/dogs/:id",{id: "@id"},{update: {method: "PUT"}});
}])

更新2

我发现了错误.它在RESTful API(Node js)中.该方法没有向Angular发送任何内容,因此没有触发回调:

//DELETE - Delete a dog with specified ID
exports.deleteDog = function(req,res) {
    console.log('DELETE' + req.params.id);

    Dog.findById(req.params.id,function(err,dog) {
        dog.remove(function(err) {
            if(err) return res.status(500).send(err.message);
            console.log('Succesfully deleted.');
            res.status(200);
        })
    });
};

用res.status(200).end()替换res.status(200)会触发回调.

谢谢大家的时间.

我建议你不要用

res.status(200).end()

实际上通常在expressJS中删除带有REST服务的对象时,常见的情况是将已删除的对象作为响应发送,因为它可能对前端获取此对象很有用(并确保它是好对象) .

所以不要使用

res.status(200).end()

使用

res.send(dog)

或者,如果要发送空响应,则删除操作的状态代码应为:

res.status(204).end()

204 NO CONTENT

请注意,默认情况下您不需要设置状态代码,它将为200.因此将状态代码设置为200只是无用的.

并且要完成http响应需要发送以关闭请求. end方法或send方法就是这样.将状态代码设置为响应http将永远不会向前端发送任何内容.这就是你的角度回调永远不会被解雇的原因.

因此,我建议您将标签expressjs添加到您的问题中,因为它不是AngularJS问题,而是真正的expressJS错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读