我对javascript号码和NaN
都有“小问题”。
我正在通过JSON格式的ajax POST方法检索一个单一的数字。
$.post('test.php?a=b', {w: w}, function(json) {
desktop.height = desktop.height - json.height * 2;
});
当我尝试乘以它时,它给了我NaN。
desktop.height = desktop.height - json.height * 2;
NaN
JSON是一个对象,对吗?因此,当我将其输入firebug / chrome控制台时,它会按预期为我提供int 0。
var a = {}; a.t = 0; a.t * 2;
0
即使我把它输入控制台,它仍然给我预期的0 int。
var a = {}; a.t = "0"; a.t * 2;
0
我的问题是,发生了什么以及如何解决?
答案 0 :(得分:1)
如果Content-Type
标头未从服务器设置为application/json
且仍然如果您希望jQuery自动将json String解析为JS对象,则必须添加dataType
{{1在json
调用。
$.post
或者你必须使用$.parseJSON
像这样解析你自己
$.post('test.php?a=b', {w: w}, function(json) {
desktop.height = desktop.height - json.height * 2;
},'json');
答案 1 :(得分:0)
当您检索数字时,请使用Javascript的parseInt()
方法解析它们。
答案 2 :(得分:0)
它取决于JSON字符串的格式,所以如果它是{height:<num>}
那么是正确的。但它实际上可能是一个字符串,您是否尝试首先将其解析为int?
parseInt(...)
答案 3 :(得分:0)
desktop.height
或json.height
为NaN
。
答案 4 :(得分:0)
JSON是Javascript对象的字符串版本。使用JSON.parse(text)从发布的字符串中创建一个对象。我不熟悉你的帖子方法,但我会尝试
function(JSON.parse(json)) {
desktop.height = desktop.height - json.height * 2;
}
答案 5 :(得分:-1)
当您检索数字时,使用JS Number()方法解析它们:)