数字为0的Ajax响应被解析为未定义

时间:2019-06-21 12:12:18

标签: javascript jquery json ajax

我正在用jQuery运行Ajax调用,该调用返回一个对象,该对象的字段为0(数字零)。但是,jQuery返回的数据具有要设置为“ undefined”的字段。

示例代码

@SpringBootApplication
@EnableFeignClients
public class FooMain {  // Your Main class
    public static void main(String[] args) {
        SpringApplication.run(FooMain.class, args);
    }
}

服务器返回的数据具有正确的值,我在Firefox开发工具中并通过原始curl请求对此进行了验证:

  

{“ type”:0,“ medium”:0,“ text”:“ Some text”}

console.debug调用的输出将字段“ type”和“ medium”的值显示为“ undefined”

当字段“类型”或“中”为1或2时,将正确解析值。为什么将零(0)值更改为undefined,如何防止这种情况?

1 个答案:

答案 0 :(得分:-1)

发送请求时,添加dataType属性。如果省略返回值,jQuery会自动解析返回数据,并可能破坏结果。他们称其为Intelligent Guessing,而从他们的documentation开始,其工作方式如下:

  

dataType(默认值:Intelligent Guess(xml,json,脚本或html))   类型:字符串   您期望从服务器返回的数据类型。如果未指定,则jQuery将尝试根据响应的MIME类型来推断它(XML MIME类型将产生XML,在1.4中,JSON将产生JavaScript对象,在1.4中,脚本将执行该脚本,而其他所有内容将是以字符串形式返回)。可用的类型(以及作为第一个参数传递给成功回调的结果):...

由于服务器返回JSON,因此请确保将其告知jQuery,以避免遇到类似的问题。您的通话应类似于:

$.ajax({
   url: myUrl,
   dataType: 'json'
}).done(descriptions => {
   console.debug(descriptions)
})