Как передать массив строк из PHP в Javascript, используя $ .ajax ()? - PullRequest
5 голосов
/ 17 августа 2010

У меня есть PHP-скрипт, который извлекает имена (строки) из базы данных. Я хотел бы передать этот массив в Javascript, используя $ .ajax (). Я не могу понять, как я должен кодировать массив в PHP, а затем декодировать его в Javascript. Может ли кто-нибудь дать пример кода для этого? Большое спасибо !!

Ответы [ 5 ]

4 голосов
/ 17 августа 2010
<?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);
        });
    });
});
2 голосов
/ 17 августа 2010

вы можете использовать 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/

1 голос
/ 17 августа 2010
<?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/

, или вы также можете сделать это супомянуто:

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-адреса.'детка ... ммм ... извини за кукурузу.

Метод getJSON довольно короткий и удобный.Посмотрите ссылки для более подробной информации.

0 голосов
/ 13 марта 2017

Это код файла Php

<?php
$array = array(1, 2, 3);
echo json_encode($array);
?>

Затем вы можете проанализировать $array в вашем $.ajax(), как это

success: function (data) {
            var x = JSON.parse(data);
            console.log(x);
        }
0 голосов
/ 17 августа 2010

Чтобы сделать это, вам просто нужно отобразить скрипт на странице 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.Например, если бы мне нужно было установить источник изображения с помощью моего serverurl, я мог бы сделать следующее:

imgElement.src = phpvars.serverurl + '/images/example.png';

Поскольку он использует JSON, не нужно беспокоиться о том, что вы ничего не испортилив вашем Javascript, пытаясь вставить переменные PHP.Кодирование / декодирование переменных обрабатываются на обоих концах встроенными функциями JSON, поэтому очень сложно их сломать и передать переменные бездумно - вы передаете их, как любой другой массив PHP.Во время моих неприятностей, которые привели к этому, у меня были проблемы с обоими из них, и это решение хорошо заботится о них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...