2016-05-16 3 views
0

Ниже приведен мой код. Я хочу получить значения из JSON, которые возвращаются файлом php. следующее - это мой php-код.Как извлекать значения из JSON, возвращаемые php

$i=1; 
foreach($chck as $value){ 
$qry_a = "SELECT ans_tags FROM wp_pp_actionphp_answers where id=".$value['answer_id']; 
$result_a = $wpdb->get_results($qry_a); 
$final[]=array(
     "question_id_$i"=>$value['question_id'], 
     "answer_id_$i"=>$value['answer_id'], 
     "ans_tags_$i"=>$result_a[0]->ans_tags, 
     "test_attempt_$i"=>$test_count_by_email, 
     ); 
     $i++; 
    } 
$jsonstring = json_encode($final); 
print_r($jsonstring);//Return JSON to javascript file 
exit(); 

Ниже приведен код моего javascript.

function get_result(result_id,email){ 
var data='result_id=' + result_id+"&email="+email; 
      $.post(
      ajaxurl + '?action=actionphp_get_result', 
      data, 
      function(result){ 
       document.write(result); 

      } 
      ); 

}

Ниже мой результат.

[{"question_id_1":"2","answer_id_1":"3","ans_tags_1":"","test_attempt_1":"181"},{"question_id_2":"1","answer_id_2":"1","ans_tags_2":"This is a tag test","test_attempt_2":"181"}] 

Как я могу извлечь значения.

+0

Вы, вероятно, следует искать в этом первом (перед отправкой): http://stackoverflow.com/questions/4935632/ parse-json-in-javascript –

+0

Возможный дубликат [Безопасное превращение строки JSON в объект] (http://stackoverflow.com/questions/45015/safely-turning-a-json-string-into-an-object) –

ответ

1

Вы можете просто разобрать JSON в Javascript:

var data = "{\"a\": 1, \"b\": 2, \"c\": [1,2,3]}"; // your result 
var obj = JSON.parse(data); 

Тогда вы можете просто получить доступ к данным, хранящимся в obj:

obj.a -> 1 
obj.b -> 2 
obj.c[0] -> 1 

EDIT (благодаря Webomatik):

Из Конечно, вы должны обратить внимание на свой результат. В вашем случае ваш результат является массивом, так что вы можете получить доступ к отдельные объекты в массиве с помощью

obj[0].question_id_1 // "2" 
obj[0].answer_id_1 // "3" 
+2

Хороший ответ. Я просто указываю, что результатом является массив объектов, поэтому правильный доступ к значениям будет obj [0] .question_id_1, obj [0] .answer_id_1 и т. Д. – Webomatik

+1

Да, но это зависит от его результат, но вы правы, в своем сценарии использования это будет массив. –

+0

Спасибо @LucaSchimweg за вашу помощь. Я застрял в странной ситуации, код работает хорошо на localhost, но, как я развернул на сервере, массив возвращает 0. обновленный php-код: $ final [] = array ("test_attempt" => $ test_count_by_email); Я изменил JS за Ваше предложение: функция (результат) { \t \t \t \t \t оповещения (результат); \t \t \t \t \t var i = 1, total = 0; \t \t \t \t \t var obj = JSON.parse (результат); \t \t \t \t var array_size = Object.keys (obj) .length; alert (obj [i] .question_id); } Не могли бы вы помочь мне. – vishal

Смежные вопросы