Я ищу лучшее решение для создания AJAX-вызова с помощью jQuery, если PHP-файл возвращает массив и выйдет на стороне клиента как массив Javascript. Вот что я делаю:
Файл PHP (Example.php):
<?php $id_numbers = array('NES-ZL','NES-AL','SNS-ZL'); for ($i=0; $i<count($the_array); $i++){ echo $id_numbers[$i]; echo '|'; } ?>
Файл JS:
id_numbers = new Array(); $.ajax({ url:"Example.php", type:"POST", success:function(msg){ id_numbers = msg.split('|'); } });
Мой текущий метод просто слишком запутан для моего вкуса.
Я бы хотел, чтобы вы могли просто
return $id_numbers;
на стороне PHP и непосредственно перевести его в массив Javascript после вызова AJAX.
Идеи, кто-нибудь?
Используйте JSON для передачи типов данных (массивов и объектов) между клиентом и сервером.
В PHP:
json_encode
json_decode
В JavaScript:
JSON.stringify
JSON.parse
PHP:
echo json_encode($id_numbers);
JavaScript:
id_numbers = JSON.parse(msg);
Как упоминал Вольфганг, вы можете дать четвертый параметр jQuery для автоматического декодирования JSON для вас.
id_numbers = new Array(); $.ajax({ url:"Example.php", type:"POST", success:function(msg){ id_numbers = msg; }, dataType:"json" });
Посмотрите на json_encode () в PHP. Вы можете получить $ .ajax, чтобы распознать это с помощью параметра dataType: «json».
@ Xeon06, приятно, но точно так же, как fyi для тех, кто читал этот поток и пробовал, как я … при возврате массива из php => json_encode($theArray)
. конвертирует в строку, которая мне нелегко манипулировать esp для таких мягких js-пользователей, как я.
Внутри js вы пытаетесь получить значения массива и / или ключи массива ur лучше, используя JSON.parse, как в var jsArray = JSON.parse(data)
где data – это возвращаемый массив из php. строка, закодированная json, преобразуется в объект js, который теперь можно легко манипулировать.
например foo = {один: 1, два: 2, три: 3} – получил после JSON.parse
for (key in foo){ console.log("foo["+ key +"]="+ foo[key]) }
– печатает на консоли firebug. вуаля!
Посмотрите на json_encode
(http://php.net/manual/en/function.json-encode.php). Он доступен с PHP 5.2. Используйте параметр dataType: 'json'
чтобы он разбирался для вас. Тогда у вас будет объект как первый аргумент. Для получения дополнительной информации смотрите jQuery-документацию: http://api.jquery.com/jQuery.ajax/
Php имеет супер-сексуальную функцию для этого, просто передайте массив:
$json = json_encode($var); $.ajax({ url:"Example.php", type:"POST", dataType : "json", success:function(msg){ console.info(msg); } });
просто 🙂