我有一个页面如下;
<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]。我该如何解决这个问题?
提前致谢...
答案 0 :(得分:55)
你无法从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]);
},
});
});
});
答案 1 :(得分:20)
很可能是最简单的方法......
<?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>
答案 2 :(得分:8)
当您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]);
}
});
});
});
答案 3 :(得分:3)
你无法从js try
访问数组(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]);
},
});
});
});
答案 4 :(得分:0)
执行echo $array;
时,PHP只会回显'Array',因为它无法将数组转换为字符串。所以你实际得到的'A'是Array的第一个字母,这是正确的。
您可能确实需要
echo json_encode($array);
这应该可以满足您的需求。
编辑:显然,您需要更改JS以使用JSON而不仅仅是文本(正如@genesis指出的那样)