【问题标题】:Callback for $save method in AngularJSAngularJS 中 $save 方法的回调
【发布时间】:2014-03-15 19:32:16
【问题描述】:

我正在寻找一个回调,以便在我的 angularjs 中的 $save 方法中使用。

我正在向 node.js 后端发送一篇博文,并通过 recaptcha 验证。

按照$resource 文档中的操作无效:

非 GET 实例操作:instance.$action([parameters], [success], [error])

var post = new Posts({
            title: this.title,
            content: this.content,
            response: this.model.captcha.response,
            challenge: this.model.captcha.challenge
         });

post.$save({}, 
     function(addedpost) {
         $location.path('posts/' + addedpost._id);
    }, function(error) {
         console.log(error);
         vcRecaptchaService.reload();
    });

在服务器中,我使用 node.js 的 simple_recaptcha 模块来验证请求中包含的 recaptcha 质询和响应。

var verifyRecaptcha = function(req,res,next){
    var privateKey = 'XXXXXXXXXXXXXXXXXXXXXXXX';
    var ip = req.ip;
    var challenge = req.body.challenge;
    var response = req.body.response;
    simple_recaptcha(privateKey, ip, challenge, response, function(err) {
        if(err) return res.send(401,err.message);
        console.log('Recaptcha verified!');
    });
    next();
};

因此,当验证码正确时,它应该继续并将帖子添加到数据库,如果不正确,则后端响应 401 并且前端 angular js 应将此识别为错误并刷新重新验证码。

我错过了什么?

【问题讨论】:

  • 你在浏览器调试工具网络选项卡中看到了什么,如果这是 Angular 端或 Node 端的问题,应该缩小范围。

标签: node.js angularjs recaptcha


【解决方案1】:

有时我也会迷失在 AngularJS 的(通常非常好的)文档中。 就我而言,我在这里找到了解决方案:how-to-add-call-back-for-resource-methods-in-angularjs

您可以让服务器在 POST 上完成其工作并分析响应,例如:

    post.$save(
        function(data){
            console.log(JSON.stringify(data));
            if(data.error_message){
                 // ... error_message comes from the server
            } else {
                // ...
            }
        }
    );        

【讨论】:

    猜你喜欢
    • 2016-09-16
    • 1970-01-01
    • 2019-06-30
    • 2017-04-24
    • 2015-06-10
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多