当前位置: 首页 > 知识库问答 >
问题:

主干模型。销毁不起作用,但ajax删除调用起作用

燕和同
2023-03-14

我目前对骨干的破坏方法有一个问题。

这是我的模型:

var FavoritePlace = Backbone.Model.extend({
    urlRoot: function() {
        return 'http://localhost:3000/api/1.0/users/' + this.userId + '/places';
    },
    initialize: function(userId) {
        this.userId = userId;
    }
});

这是在我的视图中试图删除的函数:

var placeToRemove = userFavoritePlaces.get(place);
    placeToRemove = new FavoritePlace({id : place.attributes.placeid});
    placeToRemove.userId = user.attributes.id;
    placeToRemove.destroy({
        success: function() {
            self.isFavorite(null);
        }
    });
    userFavoritePlaces.remove(placeToRemove);

我使用id属性创建了一个新的FavoritePlace,否则我的模型被认为是新的,它甚至不会进行调用。

我的webapp运行在localhost:63342

当我查看Chrome Developer tools中的“网络”选项卡时,我可以看到该调用被发送到以下URL:

请求URL:http://localhost:3000/api/1.0/users/8/places/2

router.delete('/users/:user_id/places/:place_id', function(req, res, next) {
    dataQuery.userDeletePlaceFromFavorite(req, function(err, result) {
        if (err) {
            req.stats.error = err;
            res.status(err.httpCode).json({error: err.error});
        }
        else {
            res.json(result);
        }

        next();
    })
});

我在《邮递员》中尝试了相同的url,但没有任何问题。你知道为什么它不起作用吗?它是否与任何CORS标题或类似内容相关?

谢啦

//编辑网络选项卡中调用的详细信息

curl 'http://localhost:3000/api/1.0/users/8/places/2?apikey=2yIsVhfg' -X OPTIONS -H 'Access-Control-Request-Method: DELETE' -H 'Origin: http://localhost:63342' -H 'Referer: http://localhost:63342/cmweb/index.html' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.107 Safari/537.36' -H 'Access-Control-Request-Headers: accept' --compressed

邮差打来的电话的细节

    Access-Control-Allow-Headers → X-Requested-With, origin, content-type, accept
Access-Control-Allow-Method → GET, POST, DELETE
Access-Control-Allow-Origin → *
Connection → keep-alive
Content-Length → 21
Content-Type → application/json; charset=utf-8
Date → Fri, 24 Jul 2015 17:35:31 GMT
Vary → Accept-Encoding
X-Powered-By → Express

共有1个答案

洪飞驰
2023-03-14

我遇到了另一个帖子: jQuery.ajax发送选项和帖子,如何处理电子xpress.js(Node.js),它实际上解决了我的问题。

我的API没有正确响应浏览器发出的http选项调用,因此删除调用从未到达我的后端。与Postman的不同之处在于,在将DELETE发送到API之前不会进行此选项调用。现在,我的后端用正确的头响应options方法,DELETE调用的工作方式与postman中的完全相同。

这是我添加的代码示例:

if (req.method === 'OPTIONS') {
        console.log('!OPTIONS');
        var headers = {};
        // IE8 does not allow domains to be specified, just the *
        // headers["Access-Control-Allow-Origin"] = req.headers.origin;
        headers["Access-Control-Allow-Origin"] = "*";
        headers["Access-Control-Allow-Methods"] = "POST, GET, PUT, DELETE, OPTIONS";
        headers["Access-Control-Allow-Credentials"] = false;
        headers["Access-Control-Max-Age"] = '86400'; // 24 hours
        headers["Access-Control-Allow-Headers"] = "X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept";
        res.writeHead(200, headers);
        res.end();
}
 类似资料:
  • 我使用的是Kafka版本0.8.2。在开发过程中,我想我可能需要删除一个主题。所以我所做的是在服务器配置文件中放入以下一行,并启动两台kafka服务器。 当我需要删除一个主题并运行以下命令时, 现在距我运行“删除主题”命令已经17个小时了,但Kafka仍在向我显示该主题已标记为删除。是Kafka的虫子还是我在这里做错了什么?因为在我看来这不正常。有人能就此澄清一下吗?

  • 我有一个带有一个提交按钮的表单,并在控制器中设置action to destroy方法。相同的代码适用于其他窗体和控制器,但不适用于此窗体和控制器。当我在Chrome中检查我的网页时,表单标签中的操作是错误的。 这是我的表格: 我通过设置\组织\公司控制器中的编辑方法访问此表单: 下面是设置\组织\公司控制器中的销毁方法:

  • 我有两个实体业务,由一个部门列表组成。 当我尝试删除一个业务实例时,我得到一个Mysql异常 无法删除或更新父行:外键约束失败(

  • 问题内容: 已编辑 我有一个ajax调用(使用),它调用以下php脚本。 这持续了40秒。 如果我关闭触发调用的浏览器窗口, 即使我显式发送了一个字符串并刷新了缓冲区 ,它仍然返回false ! 请问有人在这里回答吗? 问题答案: 您将需要添加“ ignore_user_abort(true);” 在PHP脚本之上,并在从脚本中回显某些内容后调用“ ob_flush()”(有关原因,请参见 PHP

  • 问题内容: 尝试访问$ container的’.box’类时,在ajax调用内部使用(this)不起作用。 如果不清楚我要做什么,我会尝试更改动态元素的css。但是例如 根本没有调整css。如果我将其移到ajax,success部分之外,它可以工作,但是我无法获得“描述”。 问题答案: 你近了 在您使用它的上下文中,“ this”是指ajax请求,而不是发出事件的事物。要解决此问题,请在发出aja

  • 问题内容: 我试图通过执行以下循环来获取TreeMap的前10个元素: 该打印 工具,为什么可能不起作用? 更新 这是我的实现: 更新 这很有用:Java Map按值排序。 问题答案: public int compare(Integer a, Integer b) { if (base.get(a) >= base.get(b)) { return -1; } else { return 1;