【问题标题】:Hapi.js reply.redirect() is not working after image upload图片上传后 Hapi.js reply.redirect() 不起作用
【发布时间】:2015-05-16 18:51:04
【问题描述】:

我的服务器中有以下代码。我正在使用 mongoose 和 s3 上传图像,然后想将用户重定向到另一个页面,但这没有发生。 (上传成功)。

Routes.js:

{path: '/success',  method: 'GET', config: controller.success} ......

controller.js:

imageUpload: {
        payload: {
                maxBytes: 209715200,
                output: 'file',
                parse: true
            },
        handler: function(request, reply) {
            var userName = request.auth.credentials.username;
            members.findMemberByUsername(userName, function(err, member){
                if (err) {
                    return reply.view('upload', {error: err});
                } else if (member) {
                    var IDImagePath = request.payload.uploadedIDname.path;
                        console.log(IDImagePath);
                    members.addID(member, IDImagePath, function(err1){
                            console.log("add id error", err1);
                        if (err1){
                            return reply.view('upload', {error: err1, member: member});
                        } else {
                            console.log("SUCCESSFUL!");
                            return reply.redirect('/success');
                        }
                    });
                }
            });
        }
    },

    success: {
        handler: function (request, reply){
            request.auth.session.clear();
            console.log("success handler working!!");
            return reply.view('success');
        }
    }

代码在控制器中同时命中console.log("SUCCESSFUL") and console.log("success handler working!!"),但没有发生重定向。顺便说一句,我使用“Jade”作为模板语言,所以我有一个success.jade。谢谢。

【问题讨论】:

    标签: hapijs


    【解决方案1】:

    我发现了问题所在。我在客户端使用 AJAX,但没有“成功”方法来重新加载页面:

    $('#submitID').click(function(){
    var formData = new FormData($('#uploadID')[0]);
    $.ajax({
        url: '/api/image',
        type: 'POST',
                xhr: function() {  // Custom XMLHttpRequest
            var myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){ 
                console.log(myXhr.upload);
    
            }
            return myXhr;
        },
        success: function(data) {
            window.location.href = "/success"
        },
        data: formData,
        cache: false,
        contentType: false,
        processData: false
    }, "json");
    });
    

    我需要window.location.href = "/success" 来重新加载页面。请注意,jQuery Ajax SUCCESS 方法与我的“/success”路线不同,它们恰好是同一个词。

    【讨论】:

    • 我很高兴你解决了你的问题,你应该关闭问题,因为它已经解决了。
    猜你喜欢
    • 2013-06-23
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 2016-08-15
    • 2017-05-05
    相关资源
    最近更新 更多