【问题标题】:NodeJs delete request via jQuery/ajaxNodeJs 通过 jQuery/ajax 删除请求
【发布时间】:2018-04-16 20:52:03
【问题描述】:

我在服务器端有这段代码

 router.delete('/categories/delete/:id', function(req,res){
         var id = req.params.id;
          Category.remove({_id: id},function(err){
               if(err){
                    console.log(err);
               }
               req.flash('success','Category Deleted');
               res.location('/manage/categories');
               res.redirect('/manage/categories');
          });
    });

在dustjs视图我有这个按钮<a href="#" class="removeCategory button tiny alert" data-id="{._id}">Delete</a>

在我的脚本文件中

$(document).ready(function(){
    $('.removeCategory').on('click', function(e){
        $target =  $(e.target);
        var id = $target.attr('data-id');
        $.ajax({
            type: 'DELETE',
            url: '/manage/categories/delete/'+id,
            success: function(response){
                alert('Delete');
                window.location = '/manage/categories';
            },
            error: function(err){
                console.log(err);
            }

        });
    });

});

问题是它有点工作,但只有在我刷新页面后类别才会消失,但是当我查看控制台时,我会收到如下消息:

abort: function abort()
​
always: function always()
​
complete: function add()
​
done: function add()
​
error: function add()
​
fail: function add()
​
getAllResponseHeaders: function getAllResponseHeaders()
​
getResponseHeader: function getResponseHeader()
​
overrideMimeType: function overrideMimeType()
​
pipe: function then()
​
progress: function add()
​
promise: function promise()
​
readyState: 4
​
responseText: "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot DELETE /manage/categories</pre>\n</body>\n</html>\n"
​
setRequestHeader: function setRequestHeader()
​
state: function state()
​
status: 404
​
statusCode: function statusCode()
​
statusText: "Not Found"
​
success: function add()
​
then: function then()

我还想提一下,警告框永远不会出现。有谁知道如何解决这个问题?提前谢谢你

【问题讨论】:

  • 什么是服务器端代码?哪个框架?
  • 看起来您实际上并没有从服务器端向客户端返回响应,并且客户端上的 success 回调因此不会被触发。
  • 感谢您的意见。我去看看

标签: jquery node.js ajax


【解决方案1】:

您调用的网址似乎不正确,responseText 属性给出了提示:

Cannot DELETE /manage/categories

这就是调用错误处理程序的原因:

error: function(err){
  console.log(err);
}

而不是成功。

您确定 id 确定正确吗?

【讨论】:

  • 是的,id 是正确的,我访问所有类别的链接是:localhost:3000/manage/categories 这就是为什么 url 是 /manage/categories/delete/'+id 以匹配服务器端代码,然后我想重新加载我的页面m 在 window.location 中使用 /manage/categories 如果我不刷新页面,则没有任何反应,一旦我在单击按钮后刷新,我会收到 flash 消息并且类别消失
  • 我通过从链接中删除 # 来修复它。我把它留空了。你是对的,链接显然是问题所在。谢谢你的回答
  • 但是我仍然在控制台中收到该消息并且警报消息永远不会触发,但我收到 flash 消息并且类别已被删除
  • 这条路线是否支持'delete'方法?您可以发送处理响应的服务器端代码部分吗?
  • 我在前端脚本中的error 方法之后添加了一个complete 方法,在该方法中我添加了window.location 和控制台,现在我在控制台中收到了消息。跨度>
猜你喜欢
  • 1970-01-01
  • 2020-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-10
  • 2016-12-01
  • 1970-01-01
  • 2019-02-05
相关资源
最近更新 更多