web-dev-qa-db-fra.com

Obtenir des données d'un tableau php - AJAX - jQuery

J'ai une page comme ci-dessous;

<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>

et un fichier php ajax.php pour traiter les requêtes ajax en tant que;

<?php
$array = array(1,2,3,4,5,6);
echo $array;
?>

Mais quand je clique, j'obtiens A au lieu de array [0]. Comment puis-je réparer cela??

Merci d'avance...

22
blasteralfred Ψ

vous ne pouvez pas accéder à array (php array) depuis js try 

<?php
$array = array(1,2,3,4,5,6);
echo json_encode($array);
?>

et 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]);
            },
        });
    });
});
54
genesis

très probablement la méthode la plus simple ...

<?php
$change = array('key1' => $var1, 'key2' => $var2, 'key3' => $var3);
echo json_encode(change);
?>

Ensuite, le script 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>
20
ballsDeep

Lorsque vous echo $array;, le résultat est Array, result[0] représente alors le premier caractère de Array qui est A.

Une façon de gérer ce problème serait la suivante:

ajax.php

<?php
$array = array(1,2,3,4,5,6);
foreach($array as $a)
    echo $a.",";
?>

code de requête

$(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]);
                 }
                });
    });

});
8
Kokos

vous ne pouvez pas accéder à array (php array) depuis js try

<?php
$array = array(1,2,3,4,5,6);
echo implode('~',$array);
?>

et 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]);
  },
  });
});
});
3
Jagan Chennai

Quand vous faites echo $array;, PHP va simplement faire écho à 'Array' car il ne peut pas convertir un tableau en chaîne. Ainsi, le «A» que vous obtenez est la première lettre de Array, ce qui est correct. 

Vous pourriez en fait avoir besoin 

echo json_encode($array);

Cela devrait vous donner ce que vous voulez. 

EDIT: Et bien évidemment, vous devrez changer votre JS pour utiliser JSON au lieu de texte (comme l'a souligné @genesis) 

0
JohnP