So I want to send a PHP array to jQuery but it's not working and I don't know why. Can someone help me out?
Here is the PHP:
$var1 = "hello";
$var2 = "world";
$values = array('value1'=>$var1,'value2'=>$var2);
echo (json_encode($values));
And the jQuery:
$.get("test.php", function(values){
var jsonValues = $.parseJSON(values);
$("showValue1").html(jsonValues.value1);
});
I figured it out on my own! It's probably not the best way (I am just a beginner in this stuff) but it works.
So I was trying to put the data from my database into an array. The code in my original post was just a sample version because I wanted to try the code first.
This is what I came up with. The PHP:
$array = array();
while($row = mysql_fetch_assoc($rs)){ //$rs is mySQL query
$array[] = $row;
}
echo $array[0]['post']. '&'; //post is the column name from my database
echo $array[1]['post']. '&';
echo $array[2]['post'];
With Ajax I did this (thanks to stefanz!):
$.ajax({
method: 'GET',
url: 'test.php',
cache: false,
success: function(data){
var tmp = data.split("&");
$('#showValue1').html(tmp[0]);
$('#showValue2').html(tmp[1]);
$('#showValue3').html(tmp[2]);
}
});
Thanks everybody for helping me out! It lead me to the code I am using now.
I think you didn't include the index of the json object. Try to used this :
$.get("test.php", function(values){
var jsonValues = $.parseJSON(values);
$("showValue1").html(jsonValues[0].value1);
});
Update this answer as of 06/10/2015 09:42AM GMT+8.
If this code also has an error, return the code to this jsonValues.value1
. I think this will be the solution. You haven't an error parsing the JSON. I think your error is on this part $("showValue1")
. JQuery doesn't know what element is that. You can try this if your container is an ID : $("#showValue1")
and else if it is class $(".showValue1")
For example your element is:
<div id="showValue1"></div>
Then your jquery is :
$.get("test.php", function(values){
var jsonValues = $.parseJSON(values);
$("#showValue1").html(jsonValues.value1);
});
I tested your php code and it checks out. I think you actually have some syntax errors with your JQuery code.
$("showValue1").html(jsonValues.value1);
most likely should have been one of
$("#showValue1")[0].html(jsonValues.value1);
$(".showValue1")[0].html(jsonValues.value1);
JQuery uses #
and .
to indicate an element's id and it's class repectively. the [0]
is because it returns an array of every element that matches on the page and I assume you only want to match the first one, maybe not though. Check out this overview of jquery selectors: http://www.w3schools.com/jquery/jquery_ref_selectors.asp
You also can try doing stuff like :
$.ajax({
url : 'test.php',
method : 'GET',
dataType : 'json',
success : function( data ){
var data = JSON.parse( data );
$('#showValue1').html( data.value1 );
}
});
Get more documentation here, it should not be a hard task. Just make sure your path to test.php
is the right one and also is a good practice to exit()
your php file