2

I'm trying to get an array of objects with data from my database into jquery to render on a website.

ex: example.php

<?php
function testFunction() {

$data = array()
$mydata = new stdClass;
$mydata->example = 'test';
$data[] = $mydata
return json_encode($data);
}

echo testFunction();
?>

ex index.html

<script>
$.ajax({
                    type: 'POST',
                    url: 'example.php',
                    data: {map: map},   
                    cache: false,
                    dataType: 'json',                 
                    success: function(response) {
                      console.log(response[0].example);
                    }
});

</script>

Output:

console.log(response);

["test", $family: function, $constructor: function, each: function, clone: function, clean: function…]

console.log(response[0].example);

undefined

So essentially, I receive the response fine, when I log it it gives me a structure that makes sense. however I can't seem to find the correct way of accessing my objects inside the array, the example I have above only returns undefined. What is the correct syntax for this please?

2
  • 2
    can u post the response here? Commented Nov 11, 2013 at 13:47
  • Vicky, done Dan Lee, fixed, I was just converting my code into a short example a little too fast. Commented Nov 11, 2013 at 14:03

3 Answers 3

4

You need to JSON.parse(response); the response. You should be able to access it like you need then..

var parsed_reply = JSON.parse(response);

EDIT After actually looking at the code:

PHP

<?php

$data['example'] = "test";

echo json_encode($data);

?>

JAVASCRIPT

<script>
$.ajax({
                type: 'POST',
                url: 'example.php',
                data: {map: map},   
                cache: false,
                dataType: 'json',                 
                success: function(response) {
                  console.log(response['example']);
                }
});

</script>

OUTPUT: "test"

Sign up to request clarification or add additional context in comments.

2 Comments

var parsed_reply = JSON.parse(response); console.log(parsed_reply.example); throws: Uncaught TypeError: Illegal invocation
Sorry I brushed over your code quickly. You don't have a key called example in your response data. Your PHP function isn't returning an Indexed or Associative array, its simply returning "test". You need to json_encode a proper associative array.
1

You need call testFunction() in example.php

<?php
   function testFunction() {

    $data = array()
    $mydata = new stdClass;
    $data[] = $mydata->example = 'test';

    return json_encode($data);
  }
     echo testFunction();
?>

6 Comments

Sorry I omitted that part as it is only an example, as I said I do get the response filled with data, I just don't know how to access it properly. I will edit my post for clarity tho.
Please post your output response.
console.log(response): ["test", $family: function, $constructor: function, each: function, clone: function, clean: function…] console.log(response[0].example): "undefined"
where is example object in your response?
"test" is the variable stored in example property of the mydata object?
|
1
function testFunction() {

$data = array();
$mydata = new stdClass;
$mydata->example = 'test';
$data[] = (array) $mydata;
return json_encode($data);
}

echo testFunction();

The response is:

[{"example":"test"}]

The key here is (array) $mydata which converts the stdclass to an array before putting it in $data

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.