我在php中有一个像这样的数组:
$array_php = (1,2,3,4,5);
在JavaScript中我做:
var obj = <?php echo json_encode($array_php); ?>;
如果我警告(obj); 我可以毫无问题地获得内容:1,2,3,4,5
如果我这样做:
var elem = obj.split(',');
这失败了。如果我做警报(elem [1]),例如我什么也得不到。并且行var elem = ...失败。
如果我在没有json_enconde的情况下创建数组工作正常,但我需要访问此对象。
我该怎么办? 谢谢!
答案 0 :(得分:3)
alert(obj)
将数组转换为字符串。 JavaScript中的数组到字符串转换基本上是使用this.join(",")
完成的(不完全,但足够接近)。
你不需要对obj
做任何事情就可以使它成为一个数组,它是一个数组!因此,只需访问alert(obj[1])
即可获得2
。
答案 1 :(得分:1)
那不是PHP数组。你的意思是array(1, 2, 3, 4, 5);
?
像这样使用json_encode
会创建一个包含JavaScript对象或数组文字的字符串,但由于您将其直接输出到JavaScript中,因此它不是字符串,而是已经是JavaScript中的数组。查看生成的源代码。它将是:
var obj = [1, 2, 3, 4, 5];
不
var obj = "[1, 2, 3, 4, 5]";
也不是
var obj = "1, 2, 3, 4, 5";
所以你不需要拆分它(没有要拆分的字符串)。只需直接访问对象(或本例中的数组):
alert(obj[0]); // Shows 1
提示:不要使用alert()
进行调试。请改用console.log()
并查看控制台。在那里,它更容易看出它是一个数组,而不是一个字符串。