Как вернуть массив из вызова AJAX?

Я ищу лучшее решение для создания 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); } }); 

просто 🙂