0

I have php function, that returns array to JavaScript like this:


    $data['first'] = 10;
    $data['second'] = 20;
    echo json_enocde($data);

In JavaScript the returned value is named response. I need to display the values and tried like this after reading about json:


        alert("First: " + response.first + " Second: " + response.second);

But this code only shows undefined values in places of response.first and response.second. If I write alert(response), then I get answer:


{"first":"10","second":"20"}

This means, that JavaScript is getting the information. How can I get the values separately from the json encoded array?

Regards

stubgo
  • 266
  • 2
  • 5
  • 15

3 Answers3

2

Use JSON.parse() to turn the JSON string into a JavaScript object.

alex
  • 479,566
  • 201
  • 878
  • 984
0

Looks like you still have the JSON string, and not parsed it to an JS object. Use JSON.parse:

var jsonString = '{"first":"10","second":"20"}'; // from whereever
var obj = JSON.parse(jsonString);
alert("First: " + response.first + " Second: " + response.second);
alert(obj); // should now be "[object Object]"
Bergi
  • 630,263
  • 148
  • 957
  • 1,375
-2

use eval like (NOT RECOMMENDED)

var res = eval(response); //as you can see people are against it so I am editing the answer

USE JSON.parse()

OR if you use jquery

jQuery.parseJSON(response);
simply-put
  • 1,068
  • 1
  • 11
  • 20
  • I would strongly recommend against using `eval`. See for instance http://stackoverflow.com/questions/4812288/why-is-eval-unsafe-in-javascript for details – jsalonen Oct 16 '12 at 12:14
  • `eval()` like that will mistake the braces as a block definition. – alex Oct 16 '12 at 12:16