Javascript数字和NaN
我对javascript数字和Javascript数字和NaN,javascript,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是一个对象,对吗?所
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
我的问题是,发生了什么,我该如何解决 当您检索数字时,使用Javascript的
parseInt()
方法解析它们。这取决于JSON字符串的格式,因此如果它的{height:}
则是正确的。但它实际上可能是一个字符串,您是否尝试过先将其解析为int
parseInt(...)
无论是
desktop.height
还是json.height
都是NaN
如果Content-Type
头没有从服务器设置为application/json
,并且仍然希望jQuery自动将json字符串解析为JS对象,那么必须在中添加dataType
json
$。post
呼叫
$.post('test.php?a=b', {w: w}, function(json) {
desktop.height = desktop.height - json.height * 2;
},'json');
或者你必须像这样解析你自己使用的
$.post('test.php?a=b', {w: w}, function(json) {
json = $.parseJSON(json);
desktop.height = desktop.height - json.height * 2;
});
JSON是Javascript对象的字符串版本。使用JSON.parse(text)从您的帖子中收到的字符串创建一个对象。我不熟悉你的post方法,但我会试试
function(JSON.parse(json)) {
desktop.height = desktop.height - json.height * 2;
}
当您检索数字时,请使用JSNumber()method:)解析它们。您能提供一个完整的测试用例吗?其中包括表达式的输入。
console.log([desktop.height,json])
显示了什么?您需要发布相关的json,以便任何人都能准确地解释这一点。您可以将console.log()
消息添加到回调函数中,以打印出typeof desktop.height
和typeof json.height
json
仅在以下情况下才是一个对象:(1)服务器使用有效的json字符串进行响应;(2)Content-Type
标题是application/json
@airbatd-输入并不重要。因为这将给jQuery带来一些声称是HTML的东西。添加标题(“内容类型:application/json”)代码>如果您正在输出JSON。如果值首先是数字,则不需要这样做。奇数。让我再看一看。@Quentin我以前有一些数值不是作为整数解析的,而是作为字符串解析的。至少尝试一下这样做是很好的。只有当它是一个由数字和一些非数字字符组成的字符串时,这才有帮助。不,你不需要,如果响应的内容类型设置正确的话。如果服务器已损坏,则只需重写数据类型。添加'json'
作为第四个参数,即可修复此问题。谢谢你,真的吗?你是怎么测试的?或者您是否查看了PHP并假设上面两个都是数字?