javascript - 数字为 0 的 Ajax 响应被解析为未定义
问题描述
我正在使用 jQuery 运行 Ajax 调用,该调用返回一个字段为 0(数字零)的对象。但是,jQuery 返回的数据将该字段设置为“未定义”。
示例代码
$.ajax({
url: myUrl
}).done(descriptions => {
console.debug(descriptions)
})
服务器返回的数据具有正确的值,我在 Firefox 开发工具中并通过原始 curl 请求验证了这一点:
{"type":0,"medium":0,"text":"一些文本"}
console.debug 调用的输出将字段“type”和“medium”的值显示为“undefined”
当“type”或“medium”字段为 1 或 2 时,值被正确解析。为什么零 (0) 值更改为未定义,我该如何防止这种情况发生?
解决方案
发送请求时,添加 dataType 属性。如果省略,Jquery 会自动解析返回数据,并且可能会破坏结果。他们称其Intelligent Guessing
为并且从他们的文档中它的工作方式如下:
dataType(默认值:Intelligent Guess(xml、json、script 或 html)) 类型:String 您期望从服务器返回的数据类型。如果没有指定,jQuery 将尝试根据响应的 MIME 类型推断它(XML MIME 类型将产生 XML,在 1.4 中 JSON 将产生一个 JavaScript 对象,在 1.4 中脚本将执行脚本,其他任何东西都会作为字符串返回)。可用的类型(以及作为第一个参数传递给成功回调的结果)是: ...
由于您的服务器返回 JSON,因此请确保将其告知 jQuery,以避免出现您遇到的问题。您的电话应如下所示:
$.ajax({
url: myUrl,
dataType: 'json'
}).done(descriptions => {
console.debug(descriptions)
})
推荐阅读
- java - MaxPairwiseProduct Java
- c# - 如何替换文本框中的'字符
- node.js - 如何将 NODEJS 中配置的 URL 从 windows 移动到 linux 框
- bash - 处理时间戳带双引号的日志文件条目
- html - 使用 css 删除跨度之间的间距
- vue.js - Vue PWA 如何更改 service-worker 的基本 url
- c++ - 三向比较运算符成员与非成员实现
- javascript - 在 wordpress 主题中禁用标题效果(Bulan)
- c++ - short 是浮点类型吗?
- java - JPA 事务不回滚持久调用。仅忽略 MySQL 上的事务规则的插入和提交