Подтвердить что ты не робот

Получить данные из 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]. Как я могу исправить это?

Спасибо заранее...

4b9b3361

Ответ 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)