从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指出)