Вопрос:
У меня есть запрос 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… } } } } });