У меня есть PHP-скрипт, который извлекает имена (строки) из базы данных. Я хотел бы передать этот массив в Javascript, используя $ .ajax (). Я не могу понять, как я должен кодировать массив в PHP, а затем декодировать его в Javascript. Может ли кто-нибудь дать пример кода для этого? Большое спасибо !!
<?php // test.php $myArray = array(1, 2, 3); echo json_encode($myArray); ?>
HTML-файл:
$(function() { $.getJSON('http://localhost/test.php', function(data) { $(data).each(function(key, value) { // Will alert 1, 2 and 3 alert(value); }); }); });
u может использовать json_encode
<?php $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_encode($arr); ?>
полный пример, который вы можете прочитать по адресу:
http://www.prodevtips.com/2008/08/15/jquery-json-with-php-json_encode-and-json_decode/
или
http://www.prodevtips.com/2009/12/09/multiple-select-lists-with-jquery-and-json/
<?php echo json_encode(array('key' => 'value', 'cool' => 'ice')); ?>
json – объект javascript. Поэтому нет необходимости «декодировать» его. Однако похоже, что вы используете jquery. Для извлечения json-данных существует отличная функция:
jQuery.getJSON(url, senddata, function(returndata){alert(returndata.cool);})
или
jQuery.getJSON(url, senddata, function(returndata){mybigfunction(returndata);}) mybigfunction(data) { myvar = data.cool; alert(myvar); }
http://api.jquery.com/jQuery.getJSON/
или вы также можете сделать это с $ .ajax, как вы упомянули:
jQuery.ajax({ url: url, dataType: 'json', data: senddata, success: function(data){mybigfunction(data)} }); mybigfunction(data) { myvar = data.cool; alert(myvar); }
http://api.jquery.com/jQuery.ajax/
«Обратный вызов» – это функция, которая вызывается и передает данные json, возвращаемые с URL-адреса.
Вы будете «льдом» ребенка … ermm … извините за кукурузу.
Метод getJSON довольно короткий и удобный. Посмотрите на ссылки для более подробной информации.
Для этого вам просто нужно выставить скрипт на страницу PHP, содержащую ваши данные, после чего вы можете получить доступ с любого другого Javascript на странице, включая jQuery и .ajax ().
Опять же, если вы просто хотите передать его через вызов AJAX, просто используйте json_encode ():
<?php echo json_encode( array( 'groupidlist'=>$groupids, 'groupnamelist'=>$groupnames, 'serverurl'=>$serverurl, 'uid'=>$curuser->getID() ) ); ?>
А затем обработайте его с помощью функций обратного вызова из .ajax()
или, возможно, лучше, .getJSON()
, который построен именно для этого использования.
Я обещаю, что не просто спам своего блога здесь, но я написал сообщение о передаче переменных между Javascript и PHP , потому что я делал это достаточно часто, чтобы придумать простой / надежный / чистый и многоразовый способ сделать это. Если вы регулярно передаете данные с PHP на Javascript и не нуждаетесь в AJAX, я вставлю основные сведения здесь:
В верхней части каждого внешнего js-файла я добавляю комментарии относительно того, какие переменные PHP необходимы, поэтому я могу отслеживать, что мне нужно, когда я его включаю (это необязательно, конечно, но приятно):
/* This script depends on the following variables in phpvars: groupidlist groupnamelist serverurl uid */
Затем, в файле PHP, я передаю необходимые переменные с одной строкой Javascript, назначая массив JSON со всеми необходимыми значениями. Примеры в PHP, непосредственно из моего кода:
<script type="text/javascript"> var phpvars = <?php echo json_encode( array( 'groupidlist'=>$groupids, 'groupnamelist'=>$groupnames, 'serverurl'=>$serverurl, 'uid'=>$curuser->getID() ) ); ?>; </script>
После того, как это настроено, я могу просто получить доступ к любым переменным PHP, которые мне нужны в Javascript, через массив phpvars
. Например, если мне нужно установить источник изображения с помощью my serverurl, я мог бы сделать следующее:
imgElement.src = phpvars.serverurl + '/images/example.png';
Поскольку он использует JSON, не стоит беспокоиться о том, что вы не ввернете что-либо в свой Javascript, пытаясь вставить переменные PHP. Кодирование / декодирование переменных обрабатывается на обоих концах встроенными функциями JSON, поэтому очень сложно их разбить и безмозгло передать переменные – вы передаете их так же, как и любой другой массив PHP. В моей игре, которая привела к этому, у меня были проблемы с обоими из них, и это решение заботится о них красиво.
Это код файла Php
<?php $array = array(1, 2, 3); echo json_encode($array); ?>
Затем вы можете разбирать $array
в $.ajax()
как это
success: function (data) { var x = JSON.parse(data); console.log(x); }