Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Js promise重定向不';行不通_Javascript_Node.js_Promise - Fatal编程技术网

Javascript Js promise重定向不';行不通

Javascript Js promise重定向不';行不通,javascript,node.js,promise,Javascript,Node.js,Promise,我有一个设置页面,你可以插入和删除一些过滤器。对于删除请求,我使用以下命令: $('#delete-filter').click(function (e) { var filtername = $('#filter-list').val(); var filterCount = $('#filter-list option').length; var retVal = confirm("Are you sure to delete this

我有一个设置页面,你可以插入和删除一些过滤器。对于删除请求,我使用以下命令:

$('#delete-filter').click(function (e) {
        var filtername = $('#filter-list').val();
        var filterCount = $('#filter-list option').length;
            var retVal = confirm("Are you sure to delete this filter?");
            if( retVal == true ){
                $.ajax({
                    url: "/settings?filtername=" + filtername,
                    method: 'DELETE',
                    dataType: "json",
                    success: function (result) {

                    }
                });

           }
           else{
              return false;
           }

    });
以下是我在本页的路线:

router.delete('/settings', ensureAuthenticated, function (req, res, next) {
    var promise = user.deleteFilter(req.session.user_id, req.query.filtername);
    var promise2 = promise.then(function (data) {
        req.session.selected_filter = data.selected;
        res.redirect('/settings');
    }, function (error) {
        console.log(error);
    })
})

本质上,我想重定向到设置页面,这样页面就会重新加载新数据。但在承诺链中,我不能使用任何响应函数。我使用重定向错误吗?或者我无法在promise chain中发送响应?

您错误地发现了问题

当您发出HTTP重定向时,您会说“您正在寻找的东西?从这里获取它。”

这与“浏览器应将此URL显示为新页面”不同

随后执行HTTP重定向,将设置页面传递到浏览器,然后浏览器将其作为成功函数中的
结果提供。(然后完全忽略它,因为您没有在该函数中放入任何内容)

如果希望浏览器加载新页面,则需要将URL作为数据传递(而不是重定向),然后将该值分配给
location.href

设置页面可能不应该动态确定,因此您可以将URL硬编码到success函数中

硬编码更有意义,因为您不应该发送重定向来响应:

如果成功应用了删除方法,则源服务器 如果可能采取行动,则应发送202(已接受)状态代码 成功但尚未颁布,204(无内容)状态 如果行动已颁布且未提供进一步信息,则代码 待提供,或200(正常)状态代码(如果操作已完成) 并且响应消息包含一个表示 描述状态


我想知道,你从哪里得到提示,OP在寻找“浏览器应该将此URL显示为新页面”?我的意思是,他使用的是ajax=/@salketter-Quote:“本质上我想重定向到设置页面,因此页面会重新加载新数据”我已经尝试
res.send({href://settings“})
而不是
res.redirect('/settings')
。正如您所说,我在success方法中使用location.href,但页面不会重新加载。它一直在加载,什么也没有发生。@emrekaplan我们能看到您在成功方法中使用的代码吗?@Salketer
$.ajax({url:/settings?filtername=“+filtername,method:'DELETE',dataType:'json',async:false,success:function(result){console.log(result)window.location.href=result.href;})