图像上传后,Hapi.js reply.redirect()无效

时间:2015-05-14 13:22:31

标签: hapijs

我的服务器中有以下代码。我正在使用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。感谢。

1 个答案:

答案 0 :(得分:0)

我发现了问题所在。我在客户端使用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'不同。路线,他们恰好是同一个词。