gpt4 book ai didi

Backbone.js 为 `model.save()` 调用发出 GET 请求

转载 作者:行者123 更新时间:2023-12-01 06:41:46 25 4
gpt4 key购买 nike

我有一个 Backbone 应用程序,我正在其中创建一个新模型并保存它。这是 CoffeeScript 中带有调试功能的代码片段:

newListing = new Listing
console.log "New?", newListing.isNew()
newListing.save creation, {
wait: true
success: (model, response) =>
console.log "SAVED", model
console.log "RESPONSE", response
}

为了调试,我还覆盖了 Backbone.sync :
oldSync = Backbone.sync
Backbone.sync = (method, model) ->
console.log "Syncing:", method, model
oldSync(arguments...)

通常,这可以正常工作。我在控制台中得到了这个:
New? true
Syncing: create > Listing
SAVED > Listing
RESPONSE > Object

在网络检查器中,我看到:
listings POST 200 application/json

我还在我的(Rails)应用程序日志中看到了一个 POST 请求。

但是,在创建了一些列表后,我开始在控制台上看到以下行为:
New? true
Syncing: create > Listing
SAVED > Listing
RESPONSE [> Object, > Object, > Object, > Object, > Object, > Object]

其中每个 Object是一个已经保存在数据库中的列表。 Network Inspector 和我的应用程序日志还表明 Backbone 对/listings 执行了 GET 请求。此外, Listing在已“保存”的第三行中是列表的客户端表示(没有服务器通常插入的一些额外细节)。

我无法找到这种行为的任何模式;有时,Backbone 坚持在 GET 之后发送 GET,并且在刷新后它开始工作。有时它会一直起作用,直到我重新启动我的应用程序服务器。很高兴探索任何建议!

[编辑]

好吧,经过一番调查,似乎在我调用 fetch() 之后在 Listings收藏, Listing#save()开始这样做。该问题仅出现在运行 Chrome Dev (v19) 的笔记本电脑上。在其他浏览器和旧版本的 Chrome 上它可以正常工作。

最佳答案

显然,这是一个特定于应用程序的问题。我的猜测是问题出在服务器端。也许您的服务器端代码在创建后返回所有列表,而不仅仅是创建的列表。成功创建后,您的服务器应以 200 OK 响应,并在响应正文中表示创建的实体。

关于Backbone.js 为 `model.save()` 调用发出 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9754449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com