Как работать с возвратом массива JQuery AJAX и PHP

Вопрос:У меня есть запрос jQuery ajax, например: $.ajax({ type: 'POST', url: 'processor.php', data: 'data1=testdata1&data2=testdata2&data3=testdata3', cache: false, success: function(result) { if(result){ alert(result); }else{ alert("error"); } } }); Обработчик processor.php установлен для возврата массива, например: $array = array("a","b","c","d"); echo $array; Я хочу сделать действие на стороне клиента на основе этого. Скажем, если массив [0] равен 'b', я

Вопрос:

У меня есть запрос jQuery ajax, например:

$.ajax({ type: ‘POST’, url: ‘processor.php’, data: ‘data1=testdata1&data2=testdata2&data3=testdata3’, cache: false, success: function(result) { if(result){ alert(result); }else{ alert(«error»); } } });

Обработчик processor.php установлен для возврата массива, например:

$array = array(«a»,»b»,»c»,»d»); echo $array;

Я хочу сделать действие на стороне клиента на основе этого. Скажем, если массив [0] равен ‘b’, я хочу предупредить “привет”. Опять же, если массив [2] равен “x”, я хочу предупредить “привет” и т.д. Как я могу фильтровать элементы массива, чтобы захватить их данные?

Ответ №1

Вам нужно будет вернуть массив, закодированный в форме json, как показано ниже.

$array = array(«a»,»b»,»c»,»d»); echo json_encode($array);

то вы можете получить к нему доступ в javascript, преобразуя его обратно в массив/объект, например

var result = eval(retuned_value);

Вы также можете перемещаться по всем элементам массива с помощью цикла for

for (var index in result){ // you can show both index and value to know how the array is indexed in javascript (but it should be the same way it was in the PHP скрипт) alert(«index:» + index + «n value» + result[index]); }

в вашем коде он должен выглядеть примерно так:

Код PHP:

$array = array(«a»,»b»,»c»,»d»); echo json_encode( $array );

jQuery script

$.ajax({ type: ‘POST’, url: ‘processor.php’, data: ‘data1=testdata1&data2=testdata2&data3=testdata3’, cache: false, success: function(result) { if(result){ resultObj = eval (result); alert( resultObj ); }else{ alert(«error»); } } }); Ответ №2

Возвращение JSON из php
http://php.net/manual/en/function.json-encode.php

и в javascript создайте объект из строки json, вы можете сделать это с помощью getJSON вместо ajax
http://api.jquery.com/jQuery.getJSON/

Убедитесь, что ваш php устанавливает правильный заголовок ответа:

header («content-type: application/json; charset=utf-8»); Ответ №3

Я нахожу лучший способ вернуть массив из php в Ajax (jscript):

на стороне php: echo json_encode($myArray);
на стороне javascript (например, myAjax.responseText)
replyVal = JSON.parse(myAjax.responseText);

Чтобы отправить массивы в php из javascript, используйте сопоставление JSON.stringify() для отправки
и php json_decode() для получения

Ответ №4

В вашем PHP-коде закодируйте массив как объект JSON

echo json_encode($array);

Затем вам нужно преобразовать объект JSON в Javascript/jQuery-совместимый объект. После этого вы можете преобразовать обратно в массив

$.ajax({ success: function(result) { jq_json_obj = $.parseJSON(result); //Convert the JSON object to jQuery-compatible if(typeof jq_json_obj == ‘object’){ //Test if variable is a [JSON] object jq_obj = eval (jq_json_obj); //Convert back to an array jq_array = []; for(elem in jq_obj){ jq_array.push(jq_obj[elem]); } console.log(jq_array); }else{ console.log(«Error occurred!»); } } }); Ответ №5$.ajax({ type: ‘POST’, url: ‘processor.php’,//please return in json dataType : ‘json’,//to get data in json data: ‘data1=testdata1&data2=testdata2&data3=testdata3’, cache: false, success: function(result) { if(result.array.length > 0){ for(var i=0;i<result.array.length;i++){ if(result.array.[i]== ‘a’){ //do somthing.. //here, you can use switch case too… } } } } });

Оцените статью
Добавить комментарий