I am trying to insert php variables into javascript.
Here is the broken code:
var tokens = [<?
$result = mysql_query("SELECT * FROM accounts ORDER BY id开发者_如何学C DESC") or die (mysql_error());
while ($row = mysql_fetch_array($result)) {
$user_name = $row['user'];
$user_id = $row['id'];
echo "['$user_name','$user_id'],";
}
?>]
Use PHP's json_encode & then echo out to javascript directly, e.g:
$fruit = array("banana", "apple", "strawberry", "raspberry", "orange");
$json_fruit = json_encode($fruit);
echo "var fruit = $json_fruit;";
Edit: I have updated this answer to no longer use eval() since it is not required. I had just started using JSON when I first answered this question.
You do this:
echo "['$user_name','$user_id'],";
... meaning that it will generate this:
[ ['a','b'], ['a','b'], ['a','b'], ['a','b'], ]
Notice that it will always end with a "," and this is an incorrect syntax.
Correct syntax is :
[ ['a','b'], ['a','b'], ['a','b'], ['a','b'] ]
I'm not a PHP guy, but I'd say something like this would fix it :
var tokens = [<?
$result = mysql_query("SELECT * FROM accounts ORDER BY id DESC") or die (mysql_error());
$i = 0;
while ($row = mysql_fetch_array($result)) {
$i++;
$user_name = $row['user'];
$user_id = $row['id'];
echo "['$user_name','$user_id']";
if($i < sizeof($result)-1 ) // incorrect syntax, but you get the point
echo ","
}
?>]
PHP runs on the server. JavaScript runs on the client.
You can generate JavaScript from PHP, but you cannot run PHP in JavaScript.
(It is worthwhile reading up on how the various components of the web work, specifically HTTP, to understand all this better.)
If you want to perform PHP actions in response to client actions in the browser without reloading the whole page, investigate 'ajax'.
精彩评论