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
  • 256
  • 2
  • 5
  • 15

3 Answers3

2

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

alex
  • 460,746
  • 196
  • 858
  • 974
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
  • 572,313
  • 128
  • 898
  • 1,281
-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,058
  • 1
  • 11
  • 19
  • 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