Intereting Posts
Codeignitor, Facebook javascript SDK, PHP SDK Перенаправление после входа в facebook не getUser () до обновления как присоединиться к двум многомерным массивам в php Параметрированные запросы проблема с объектом PDO В чем проблема в коде, написанном для сравнения даты с сегодняшней датой? получение выходного и выходного статуса из shell_exec () Использовать пространство имен php внутри функции PHP Получить максимальную ценность из массива Как получить информацию о пользователе в группе безопасности Active Directory с использованием LDAP и PHP Передача строки Javascript в php String как использовать DISTINCT здесь в моем запросе CODEIGNITER Удаление цифр после двух десятичных знаков без округления значения загруженное фото сообщение на facebook альбом Автоматическое создание настраиваемых значений полей в WordPress Обратная инженерия или автоматическое поколение сущностей в Laravel?

передать массив php в массив javascript

Я ищу лучший способ передать php-массив в javascript.

Я делаю RPG, и когда они заходят в систему, я хотел бы вернуть их сохраненные данные из базы данных и сохранить в массиве со стороны JavaScript:

Чтобы получить данные, я делаю:

$.getJSON("php/CRUD.php", {"_functionToRun" : ""}, function (returned_data) { game.data.dataArray.push(returned_data.split(" ")); log("1: " + game.data.dataArray); //output: `1: 120,mymap2` log("2: " + game.data.dataArray[0]); //output: `2: 120,mymap2` } ); 

PHP:

  $qry = 'SELECT * FROM userstats WHERE id_user_fk ="' . $_SESSION['userid'] . '" LIMIT 1'; $result = $mysqli->query($qry) or die(mysqli_error($mysqli)); while ($row = $result->fetch_assoc()) { $message = $row['experience'] . $row['levelname']; } echo json_encode($message); 

1) Это лучший способ получить набор значений в массив js?

2) Почему я не могу получить доступ к определенному элементу данных game.data.dataArray используя game.data.dataArray[0] .

Они дают одинаковый выход 1: 120,mymap2

  log("1: " + game.data.dataArray); log("2: " + game.data.dataArray[0]); 

Должен ли returned_data.split(" ") разделять возвращенную строку на два элемента массива?


EDIT: Хорошо, я сделал echo json_encode($message); и он возвращается с кавычками, но при этом возвращает одинаковые результаты для game.data.dataArray и game.data.dataArray[0]

 1: "120,mymap2" 2: "120,mymap2" 

Я также изменил функцию на $.getJSON


Изменен снова на

  $qry = 'SELECT * FROM userstats WHERE id_user_fk ="' . $_SESSION['userid'] . '"'; $result = $mysqli->query($qry) or die(mysqli_error($mysqli)); while ($row = $result->fetch_assoc()) { $array[] = $row['experience'] . $row['levelname']; die(json_encode($array[])); } 

и JS:

 $.getJSON("php/CRUD.php", {"_functionToRun" : ""}, function (returned_data) { game.data.dataArray.push(returned_data.split(" ")); log("1: " + game.data.dataArray); log("2: " + game.data.dataArray[0]); } ); 

Выходы:

 Uncaught melonJS: level <br /> <font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'> <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-...<omitted>...nd 

Если вы используете $.getJSON и вы предоставляете действительный json, вам не нужно ничего разбирать, поэтому вы можете изменить свой php на:

 if ($row = $result->fetch_assoc()) { echo json_encode($row); exit; // You're limiting the number of rows to 1, so there is no need to continue } 

И javascript:

 $.getJSON("php/CRUD.php", {"_functionToRun" : ""}, function (returned_data) { // you can push `returned_data` to an array / add it to an object, // but then you need to keep track of its index log("1: " + returned_data.experience); //output: `1: 120` log("2: " + returned_data.levelname); //output: `2: mymap2` } ); 

Что вам нужно сделать, измените этот код:

 while ($row = $result->fetch_assoc()) { $message = $row['experience'] . $row['levelname']; } 

Чтобы сделать его как массив:

 while ($row = $result->fetch_assoc()) { $message[] = $row['experience'] . $row['levelname']; } 

Таким образом, $message теперь становится массивом. Вы должны передать это клиенту. Вы можете сделать это, используя:

 die(json_encode($message)); 

Причина в том, что в вашем коде он выводит только последний.