从php数组获取数据 – AJAX – jQuery

我有一个页面如下;

<head> <script type="text/javascript" src="jquery-1.6.1.js"></script> <script type="text/javascript"> $(document).ready( function() { $('#prev').click(function() { $.ajax({ type: 'POST', url: 'ajax.php', data: 'id=testdata', cache: false, success: function(result) { $('#content1').html(result[0]); }, }); }); }); </script> </head> <body> <table> <tr> <td id="prev">prev</td> <td id="content1">X</td> <td id="next">next</td> </tr> </table> </body> 

和一个PHP文件ajax.php来处理Ajax请求;

 <?php $array = array(1,2,3,4,5,6); echo $array; ?> 

但是当我点击,我得到A而不是数组[0]。 我怎样才能解决这个问题?

提前致谢…

你不能从js尝试访问数组(PHP数组)

 <?php $array = array(1,2,3,4,5,6); echo json_encode($array); ?> 

和js

 $(document).ready( function() { $('#prev').click(function() { $.ajax({ type: 'POST', url: 'ajax.php', data: 'id=testdata', dataType: 'json', cache: false, success: function(result) { $('#content1').html(result[0]); }, }); }); }); 

很可能是最简单的方法…

 <?php $change = array('key1' => $var1, 'key2' => $var2, 'key3' => $var3); echo json_encode(change); ?> 

然后,jQuery脚本…

 <script> $.get("location.php", function(data){ var duce = jQuery.parseJSON(data); var art1 = duce.key1; var art2 = duce.key2; var art3 = duce.key3; }); </script> 

当你echo $array; ,结果是Arrayresult[0]表示Array的第一个字符,即A

处理这个问题的一种方法是这样的:

ajax.php

 <?php $array = array(1,2,3,4,5,6); foreach($array as $a) echo $a.","; ?> 

jQuery代码

 $(function(){ /* short for $(document).ready(function(){ */ $('#prev').click(function(){ $.ajax({type: 'POST', url: 'ajax.php', data: 'id=testdata', cache: false, success: function(data){ var tmp = data.split(","); $('#content1').html(tmp[0]); } }); }); }); 

你不能从js尝试访问数组(PHP数组)

 <?php $array = array(1,2,3,4,5,6); echo implode('~',$array); ?> 

和js

 $(document).ready( function() { $('#prev').click(function() { $.ajax({ type: 'POST', url: 'ajax.php', data: 'id=testdata', cache: false, success: function(data) { result=data.split('~'); $('#content1').html(result[0]); }, }); }); }); 

当你做echo $array; ,因为PHP不能将一个数组转换为一个string,所以PHP会简单地回显'Array'。 所以你实际得到的'A'是Array的第一个字母,这是正确的。

你可能真的需要

 echo json_encode($array); 

这应该得到你想要的。

编辑 :显然,你需要改变你的JS与JSON的工作,而不是只是文本(由@genesis指出)