Массив PHP в массив JS с jQuery и json_encode

Я просто хочу, чтобы мой массив 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.'}'; 

Это будет работать точно.