Tom
Tom

Reputation: 336

Parsing PHP/JSON data in Javascript

I'm trying to communicate AJAX, JSON to PHP and then PHP returns some data and I'm trying to parse it with Javascrpt.

From the php, server I return,

    echo json_encode($data); 

    // it outputs ["123","something","and more something"]

and then in client-side,

success : function(data){

    //I want the data as following

    // data[0] = 123
    // data[1] = something
    // data[3] = and more something
}

But, it gives as;

        data[0] = [ 
        data[1] = " 
        data[2] = 1

It is reading each character but I want strings from the array, not individual characters. What is happening here? Thanks in advance, I am new to Javascript and JSON, AJAX.

Upvotes: 9

Views: 20035

Answers (5)

Christoph Grimmer
Christoph Grimmer

Reputation: 4313

JSON.parse(data) should do the trick.

Upvotes: 12

Emmanuel Okeke
Emmanuel Okeke

Reputation: 1472

I'm not sure if this is what you want but why don't you want php to return it in this format:

{'item1':'123','item2':'something','item3':'and more something'}

Well to achieve this, you'll need to make sure the array you json_encode() is associative. It should be in the form below

array("item1"=>123,"item2"=>"something","item3"=>"more something");

You could even go ahead to do a stripslashes() in the event that some of the values in the array could be URLs

You could then do a JSON.parse() on the JSON string and access the values

Hop this helps!

Upvotes: 1

qfel13
qfel13

Reputation: 141

You did not shown function in which you parse data. But you shoud use

JSON.parse

and if broser does not support JSON then use json polyfill from https://github.com/douglascrockford/JSON-js

dataArray = JSON.parse(dataFomXHR);

Upvotes: 1

Kabilan S
Kabilan S

Reputation: 1094

Check this one... Should Work

success : function(data){

var result = data;

result=result.replace("[","");

result=result.replace("]","");

var arr = new Array();

arr=result.split(",")

alert(arr[0]); //123

alert(arr[1]); //something

alert(arr[2]); //......
}

Upvotes: 3

VisioN
VisioN

Reputation: 145368

Set the dataType property of the ajax call to json. Then jQuery will automatically convert your response to object representation.

$.ajax({
    url : ...,
    data : ...,
    dataType : "json",
    success : function(json) {
        console.log(json);
    }
});

Another option is to set headers in PHP so that JQuery understand that you send a JSON object.

header("Content-Type: application/json");
echo json_encode($data);

Upvotes: 4

Related Questions