2011-10-13 39 views
0

我使用php从mysql-server中获取一行数据,然后将其编码为一个json数组。然后我使用下面的PHP来获取信息。奇怪的部分是,如果我发送“vname”到它自己的div,我会得到“NaN”。如果我在第一个div中显示它,一切都很好。任何想法为什么?顺便说一下,使用.html发送给div是否适合我?我已经尝试.appendTo和.text具有相同的结果。json/jquery到第二个div返回NaN

<h3>Output: </h3> 
<div id="output">Content1</div> 
<div id="username">content2</div> 

<script id="source" language="javascript" type="text/javascript"> 

$(function() { 
    $.ajax({ 
     url: 'api.php', 
     dataType: 'json', 
     success: function(data) { 
      var id = data[0]; 
      var vname = data[1]; 
      var message = data[2]; 
      var timestamp = data[3]; 

      $('#output').html(+id + timestamp + message); 
      $('#username').html(+vname); 
     } 
    }); 
}); 

</script> 
+0

是你在最后一行vname中加号(+)的错字吗?还有所有其他的变量名称? – jbabey

+0

你的哪些数据[n]元素应该是数字,哪些应该是字符串? – Blazemonger

回答

4

我;因为第一个+会去猜测它。 JavaScript是试图没什么添加到所有的其他的东西,这将输出NaN

$('#output').html(id +timestamp +message); 
$('#username').html(vname);

在这种情况下text()可能是更好的使用,因为没有在你的字符串的任何HTML元素,但它确实没关系。

+1

你绝对正确。我是新来的(惊喜) - 所以我想我已经了解到+在将内容更新到特定的div时增加了变量?谢谢! – user977101

+1

'+'会将整数和字符串加在一起,但是因为你有'*空白* +',JavaScript赋值是NaN,因为它需要在空白处添加一些东西。只是让你知道'NaN'代表'Not a Number' – locrizak

+0

谢谢你的帮助!你每天都会学到一些东西,这是一种奢侈! – user977101

0
$('#output').html(+id + timestamp + message); 
$('#username').html(+vname); 

这些可能是您的问题。变量前面的加号会引发错误。如果你正在尝试来连接(加在一起)的现有价值,并从阿贾克斯改变它的一些东西你这样的回应:

$('#output').html($('#output').html() + id + timestamp + message); 
$('#username').html($('#username').html + vname); 
3

+variable是铸造一个变量一些简写:Unary plus/minus (MDN)

var x = "5"; 
+x; //Gives you 5 as a number 
x = "Hello"; 
+x; //Gives you NaN 

您可以使用常规append

$('#output').append(id + timestamp + message); 
$('#username').append(vname);