Я просто хочу, чтобы мой массив PHP был массив JS, что я делаю неправильно здесь?
PHP:
// get all the usernames $login_arr = array(); $sql = "SELECT agent_login FROM agents"; $result = mysql_query($sql); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { array_push($login_arr, $row["agent_login"]); } $js_login_arr = json_encode($login_arr); print $js_login_arr; // ["paulyoung","stevefosset","scottvanderlee"]
JS:
var login_arr = "<?= $js_login_arr; ?>"; alert(login_arr); // acn't even get the string in?? var obj = jQuery.parseJSON(login_arr);
Удалите кавычки из встроенного PHP в свой javascript. Обозначение представляет собой литерал массива и не нуждается в цитировании (если предположить, что комментарий PHP после js_login_arr
– это то, что напечатано в javascript).
Легкий способ сделать это через разграничение. Возьмите свой массив (не используйте массивы-адресаты, если вам не нужны имена полей), вставьте его в строку, ограниченную некоторым символом, который не должен использоваться, скажем% или что-то еще, а затем в JS просто взорваться на этом символе и вуаля, у вас есть массив. Вам не нужно всегда использовать формализмы, такие как JSON или XML, когда простое решение будет делать трюк.
Если вы хотите сделать php-массив для JSON, вам нужно это сделать, если $phpArray
на самом деле является массивом.
var jsJSON = echo json_encode($phpArray)
Если вы хотите просто эхо и обратиться к JSON, вам нужно передать его как строку:
$phpArray = '{'.$key1.':'.$val1','.$key2':'.$val2.'}';
Это будет работать точно.