2017-04-13 4 views
1

이 함수는 JSON 객체를 반복하고, 새 객체를 만들고,이 새 객체를 기능javacript 함수에서 반환 한 배열 내부의 객체에 액세스하는 방법

function getTestQuestions() { 
 
     // alert('10'); 
 
     var sessionQuestions = []; 
 
     $.getJSON('testservice.php?action=getQuestions', function(json){ 
 
      
 
      
 
      if (json.your_questions.length > 0) { 
 
       var totalQuestions = json.your_questions.length; 
 
       totalQuestions_global = totalQuestions; 
 

 

 

 
       for (var i = 0; i < totalQuestions; i++) { 
 

 
        var question_object = new Object(); 
 
        question_object.serialNo = i; 
 
        question_object.passage = json.your_questions[i]['passage']; 
 
        question_object.cur_question = json.your_questions[i]['question']; 
 
        question_object.option1= json.your_questions[i]['option1']; 
 
        question_object.option2 = json.your_questions[i]['option2']; 
 
        question_object.option3 = json.your_questions[i]['option3']; 
 
    
 

 
        sessionQuestions.push(question_object); 
 

 
       } 
 

 
      } 
 
     }); 
 
     
 
     return sessionQuestions; 
 
    }

에 의해 반환 된 다음 함수는이 함수를 호출합니다. 하지만 배열 내부의 개체에 액세스하는 데 문제가 있습니다. 코드를 참조하십시오 : 마지막 두 줄의

function initialTestLoaded() { 
 

 
       var allQuestions = getTestQuestions();     
 

 
       $('.current_quest').text(allQuestions[0]['serialNo']); 
 
       $('.total_quest').text(testQuestions.length);

코드는 정의의 "serialNo"ppty에 액세스 할 수 없습니다되는 오류를 반환합니다.

여기에 질문을 게시 한 것은 이번이 처음이며, 좋은 사람들은 항상 큰 도움이 될 것이라고 믿습니다. 감사합니다

PHP에서
+0

것이 아니요, 다만 PHP로 JSON 응답을 통과 한 후 json_decode ($의 JSON, true)를 사용하여 자동으로 변환됩니다 배열로. 그런 다음 해당 배열을 사용하여 배열 내의 요소에 액세스합니다. $ array [ 'passage'] 같은 것입니다. –

+0

'$ .getJSON'이 비동기 함수이고'getTestQuestions' 함수가 결과를 기다리지 않고 항상 정의되지 않은 값을 반환하기 때문에 이런 일이 발생합니다. –

+0

감사합니다. 반향하기 전에 PHP에서 json_decode가 필요합니까? 대부분의 기사는 javascript에있는 json_encoded 객체에 액세스하는 것이 좋습니다. 내 도전은 자바 스크립트에서 json_encoded 객체에 액세스 할 수 없다는 것이 아니라 모든 항목을 반복하고 하나의 함수로 배열에 푸시 한 후이 함수를 호출하면이 배열의 요소에 액세스하는 것 같습니다. 다른 기능에서 작동합니다. 함수 선언 내에서 Console.log를 실행하면 배열이 제대로 채워 졌음을 나타내지 만 호출 함수 내부에는 정의되지 않은 것으로 표시됩니다. 나를 안내 해줘. – UfereP

답변

0

바로 사용 json_decode

json_decode($jsondata, true); 

기본 예를

<?php 
$json_string = 'https://example.com/jsondata.json'; 
$jsondata = file_get_contents($json_string); 
$obj = json_decode($jsondata,true); 
echo "<pre>"; 
print_r($obj); 
?> 
관련 문제