Reputation: 437
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?
Upvotes: 2
Views: 12567
Reputation: 2399
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
Upvotes: 1
Reputation: 8074
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"
Upvotes: 4
Reputation: 22711
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();
?>
Upvotes: 1