从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;  ,结果是Array , result[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指出)