Получить данные из 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]. Как я могу исправить это?
Спасибо заранее...
Ответы
Ответ 1
вы не можете получить доступ к массиву (php-массив) из js
попробуйте
<?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]);
},
});
});
});
Ответ 2
вполне возможно, самый простой метод...
<?php
$change = array('key1' => $var1, 'key2' => $var2, 'key3' => $var3);
echo json_encode(change);
?>
Затем jquery script...
<script>
$.get("location.php", function(data){
var duce = jQuery.parseJSON(data);
var art1 = duce.key1;
var art2 = duce.key2;
var art3 = duce.key3;
});
</script>
Ответ 3
Когда вы 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]);
}
});
});
});
Ответ 4
вы не можете получить доступ к массиву (php-массив) из js try
<?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]);
},
});
});
});
Ответ 5
Когда вы выполняете echo $array;
, PHP просто выдает "Array", поскольку он не может преобразовать массив в строку. Таким образом, "A", который вы на самом деле получаете, является первой буквой Array, что является правильным.
Вам может понадобиться
echo json_encode($array);
Это должно получить то, что вы хотите.
EDIT. И, очевидно, вам нужно будет изменить JS для работы с JSON вместо простого текста (как указано в @genesis)