将 HTTP 基本身份验证标头添加到 Backbone.js 同步功能可防止模型在 Save() 上更新

2023-11-21

我正在开发一个 Web 应用程序,该应用程序由使用 Python 的 CherryPy 框架编写的 Restful API 提供支持。我开始使用 jQuery 和服务器端模板的组合来编写用户界面,但最终切换到 Backbone.js,因为 jQuery 已经失控了。

不幸的是,我在让模型与服务器同步时遇到一些问题。这是我的代码的一个简单示例:

$(function() {
    var User = Backbone.Model.extend({
        defaults: {
            id: null,
            username: null,
            token: null,
            token_expires: null,
            created: null
        },

        url: function() {
            return '/api/users';
        },

        parse: function(response, options) {
            console.log(response.id);
            console.log(response.username);
            console.log(response.token);
            console.log(response.created);
            return response;
        }
    });

    var u = new User();
    u.save({'username':'asdf', 'token':'asdf'}, {
        wait: true,
        success: function(model, response) {
            console.log(model.get('id'));
            console.log(model.get('username'));
            console.log(model.get('token'));
            console.log(model.get('created'));
        }
    });
});

您可能知道,这里的想法是使用该服务注册新用户。当我打电话时u.save();,Backbone确实向服务器发送了POST请求。以下是相关部分:

Request:

Request URL: http://localhost:8080/api/users
Request Method: POST
Request Body: {"username":"asdf","token":"asdf","id":null,"token_expires":null,"created":null}

回复:

Status Code: HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 109
Response Body: {"username": "asdf", "created": "2013-02-07T13:11:09.811507", "token": null, "id": 14, "token_expires": null}

可以看到,服务器成功处理了请求并返回了一个id和一个值created。但由于某种原因,当我的代码调用console.log(u.id);, I get null,当我的代码调用时console.log(u.created);, I get undefined.

tl;dr:为什么 Backbone.js 在调用后不保留对我的对象的更改save()?

Edit:我修改了上面的代码,以便使用 get 函数来访问模型属性success打回来。这应该可以解决原始代码的任何并发问题。

我还在模型中添加了一些控制台日志记录parse功能。奇怪的是,每一个都是undefined...这是否意味着 Backbone.js 无法解析我的响应 JSON?

Edit 2:几天前,我发现这个问题实际上是一个自定义标头,我将其添加到每个请求中以启用 HTTP 基本身份验证。看这个答案了解详情。


这段代码:

u.save();
console.log(u.id);
console.log(u.username);
console.log(u.token);
console.log(u.created);

立即运行...之后就没有什么可运行的并且排队的 ajax 请求开始。然后响应会稍后出现,并且只有在此时值才会发生更改。

似乎这些属性并不直接在对象上,但保存的异步处理仍然存在,即使您将该代码更正为具有,您也不会获得预期结果console.log(u.get("id")) etc.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 HTTP 基本身份验证标头添加到 Backbone.js 同步功能可防止模型在 Save() 上更新 的相关文章

随机推荐

  • Gradle 构建期间序言中不允许出现内容

    我尝试了不同的方法 但问题没有解决 我什至重新安装了 android studio 但仍然遇到同样的问题 Fatal Error annotations 26 1 1 pom 2 1 Content is not allowed in pr
  • Vue - 深度观察对象数组并计算变化?

    我有一个名为people包含如下对象 Before id 0 name Bob age 27 id 1 name Frank age 32 id 2 name Joe age 38 它可以改变 After id 0 name Bob age
  • 此双重检查锁定修复有什么问题?

    所以我现在看到很多文章声称在 C 上双重检查锁定 通常用于防止多个线程尝试初始化延迟创建的单例 已被破坏 正常的双重检查锁定代码如下所示 class singleton private singleton private construct
  • numpy 中 itertools.combinations 的 N 维版本

    我想实施itertools combinations对于 numpy 基于这次讨论 我有一个适用于一维输入的函数 def combs a r Return successive r length combinations of elemen
  • 有没有一种简单的方法可以在 Visual Studio 中编写 UTF-8 八位字节?

    我有一个问题 我需要在 C 源代码中的标准 char 类型上使用 UTF 8 编码的字符串 如下所示 char twochars xe6 x97 xa5 xd1 x88 通常 如果我想编写 UTF 8 字符 我需要使用如上所述的八位字节 V
  • 非规范化数据

    我使用以下 R 代码将数据标准化为最小值和最大值 normalize lt function x return x min x max x min x mydata lt as data frame lapply mydata normal
  • .NET 类及其源代码

    当我编写 C 或任何 NET 程序 时 我使用方法和类 我使用的大部分代码都是从 NET 类调用方法 是否可以 纯粹出于好奇 查看这些类的实际源代码 我知道 MSDN 有完整的类 它们的属性和方法的列表 但我想看看代码 是的 浏览 NET框
  • Django 按点赞数最高的顺序排序

    我正在尝试创建一个页面 人们可以在其中看到评分最高的文章 但存在一个问题 当我过滤另一用户也喜欢的文章的点赞数时 它会创建已投票文章的副本 我想要的是按照点赞数最高的顺序对博客的文章进行排序 模型 py class Article mode
  • 使用 Realm.io 存储货币值

    我开始在我正在编写的 Android 应用程序中使用 Realm io 在我的一个数据对象中 我需要存储货币值 以前 我在内部将该值存储为 BigDecimal 值 然后在移入和移出数据库时也将其转换为双精度值 我总是被告知 由于处理货币值
  • TCP套接字客户端通过nodejs上的代理

    我需要与 smtp 服务器建立 tcp 套接字连接 是否可以通过nodejs上的代理服务器连接 有可用的 npm 模块吗 我根本找不到任何东西 var net require net var HOST 127 0 0 1 var PORT
  • Python 3 中的 Concurrent.futures 与多重处理

    Python 3 2 推出并发期货 这似乎是旧线程的一些高级组合多重处理模块 与旧的多处理模块相比 将其用于 CPU 密集型任务有哪些优点和缺点 本文表明他们更容易合作 是这样吗 我不会打电话concurrent futures更 先进 这
  • iOS 8.1.3 - 企业分发 - 应用程序缺少应用程序标识符权利

    我在 iOS 8 1 3 上使用 Enterprise Distribution 时遇到很多问题 我设法修复了大部分出现此错误的安装 Ignore manifest download already have bundleID 有了这个答案
  • 使用 Travis 调用 GitHub API 构建 Tag

    我在 GitHub 存储库中创建了一个 TravisCI Hook 它在推送到存储库后自动运行构建 我想补充的是 如果构建成功 则会自动创建一个标签 我发现有一种方法可以使用 GitHub API 创建标签http developer gi
  • Eclipse 无法运行:\.metadata\.log 错误

    我正在做一个Android项目 重新启动计算机后 eclipse无法运行 它抛出 metadata log 文件错误 Go to metadata plugins org eclipse core resources你会找到 snap文件
  • 如何获取 SSL 证书以在 Firefox 上使用本地主机

    我正在努力让一个网站在本地 apache 网络服务器上运行 当我单击网站中的某些链接时遇到错误 Firefox 显示 无法连接 错误页面 并在 URL 前面附加 https 我首先认为这是浏览器配置问题 并尝试了此处建议的所有解决方案 Fi
  • 在 C# 中调用父表单中的方法并访问父表单中的 gui 元素的最佳实践

    我正在开发一个 win 表单应用程序 我发现自己经常需要访问父表单中的方法 例如来自另一个类的 Form1 无论是表单类还是只是一个类 我的 form 1 的构造函数中有一些初始值设定项 因此我无法创建 Form1 的实例 所以我无法访问
  • 为什么我可以省略调用链中后续的空条件运算符?

    考虑以下代码 IEnumerable
  • 获取jqGrid中所有行ID

    如何获取网格中每一行的 ID 甚至是跨页的 ID getDataIDs and getRowData只给出当前页面的 ID Thanks 仅当您有本地网格时才有可能 datatype local 或有loadonce true 在这种情况下
  • 受约束的 d3.js 强制显示

    我想用力布局做一些不寻常的事情 用于可视化图表 星座和所有这些看起来都很有趣 但对于时间序列数据来说 它并没有那么有用 我希望能够通过某个轴来约束布局 例如 通过根据节点在数据集中出现的时间来布局节点 同时仍然保留可视化的 弹性 使用 d3
  • 将 HTTP 基本身份验证标头添加到 Backbone.js 同步功能可防止模型在 Save() 上更新

    我正在开发一个 Web 应用程序 该应用程序由使用 Python 的 CherryPy 框架编写的 Restful API 提供支持 我开始使用 jQuery 和服务器端模板的组合来编写用户界面 但最终切换到 Backbone js 因为