我正在用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,如何防止这种情况?
答案 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)
})