0

我对 javascript 数字和NaN.

我正在通过 ajax POST 方法以 JSON 格式检索一个数字。

$.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

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

4

6 回答 6

1

如果Content-Type标头未设置为来自服务器并且仍然如果您希望 jQuery 将 json 字符串自动解析为 JS 对象,application/json那么您必须添加调用。dataType json$.post

$.post('test.php?a=b', {w: w}, function(json) {
    desktop.height = desktop.height - json.height * 2;
  },'json');

$.parseJSON或者您必须像这样使用自己解析

  $.post('test.php?a=b', {w: w}, function(json) {
     json = $.parseJSON(json);
     desktop.height = desktop.height - json.height * 2;
  });
于 2012-05-29T12:50:08.277 回答
0

当您检索您的数字时,请使用 Javascript 的parseInt()方法解析它们。

于 2012-05-29T12:48:02.023 回答
0

它取决于 JSON 字符串的格式,所以如果{height:<num>}是,那么是正确的。但它实际上可能是一个字符串,您是否尝试过先将其解析为 int ?

parseInt(...)
于 2012-05-29T12:49:08.793 回答
0

要么desktop.height要么json.heightNaN

于 2012-05-29T12:50:06.017 回答
0

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

function(JSON.parse(json)) {
    desktop.height = desktop.height - json.height * 2;
} 
于 2012-05-29T12:56:01.660 回答
-1

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

于 2012-05-29T12:57:55.730 回答