Javascript号码和NaN

时间:2012-05-29 12:45:56

标签: javascript

我对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

我的问题是,发生了什么以及如何解决?

6 个答案:

答案 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.heightjson.heightNaN

答案 4 :(得分:0)

JSON是Javascript对象的字符串版本。使用JSON.parse(text)从发布的字符串中创建一个对象。我不熟悉你的帖子方法,但我会尝试

function(JSON.parse(json)) {
    desktop.height = desktop.height - json.height * 2;
} 

答案 5 :(得分:-1)

当您检索数字时,使用JS Number()方法解析它们:)