Ajax - How to use a returned array in a success function

78,703

Solution 1

You should return the data as JSON from the server.

PHP

$arr = array();
$arr[0] = "Mark Reed";
$arr[1] = "34";
$arr[2] = "Australia";

echo json_encode($arr);
exit();

JS

$.ajax({
    type: "POST",
    url: "/returndetails.php",
    data: 'id=' + userid,
    dataType: "json", // Set the data type so jQuery can parse it for you
    success: function (data) {
        document.getElementById("name").innerHTML = data[0];
        document.getElementById("age").innerHTML = data[1];
        document.getElementById("location").innerHTML = data[2];
    }
});

Solution 2

A small mistake:

Not: exit($arr);

replace with: echo json_encode($arr);

Solution 3

There a Problem , when you want display for example data[0] and data[1], it seems like a character from string. It Solves adding header("Content-Type: application/json"); before apply echo json_encode($arr)

Share:
78,703
M9A
Author by

M9A

Updated on November 29, 2020

Comments

  • M9A
    M9A over 3 years

    Hi I have a php code that returns an array. I want to be able to use this array in my ajax success function but I'm not sure how to go about doing this. I have tried the following, but no luck.

    php code:

    $arr = array();
    $arr[0] = "Mark Reed"
    $arr[1] = "34";
    $arr[2] = "Australia";
    
    exit($arr);
    

    js code:

    $.ajax({
        type: "POST",
        url: "/returndetails.php",
        data: 'id=' + userid,
        success: function (data) {
            document.getElementById("name").innerHTML = data[0];
            document.getElementById("age").innerHTML = data[1];
            document.getElementById("location").innerHTML = data[2];
        }
    });
    
  • Aaron Liu
    Aaron Liu over 8 years
    I did the same thing in your way but it turns out my data[x] is actually undefined. I can echo it in PHP with no problems...
  • RWolfe
    RWolfe almost 8 years
    Is there a way to parse an array within an array?