2017-04-13 98 views
1

該函數調用一個PHP腳本,它反映了JSON數據,它循環遍歷JSON對象,創建一個新對象並將這個新對象推送到一個數組上通過功能如何訪問javascript函數返回的數組中的對象

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錯誤。

這是我第一次在這裏發表一個問題,我相信這裏的好人會一如既往地給予很大的幫助。由於

+0

,不,不,只是傳遞到PHP JSON響應,然後使用json_decode($ json的,真正的),它會自動轉換成陣列。然後使用該數組訪問數組中的元素。像$ array ['passage']等。 –

+0

發生這種情況是因爲'$ .getJSON'是一個異步函數,'getTestQuestions'函數永遠不會等待結果,總是返回一個未定義的值。 –

+0

謝謝大家。在回聲之前,我需要首先在php中使用json_decode嗎?大多數文章都建議訪問json_encoded對象,因爲它在javascript中。我的挑戰不是我無法訪問JavaScript中的json_encoded對象,而是在循環遍歷所有條目並將它們推送到一個函數中的數組之後,我無法訪問此返回數組中的元素,當我調用此函數時功能在另一個功能。在函數聲明中運行Console.log顯示該數組已正確填充,但在調用函數中顯示爲未定義。請指導我。 – UfereP

回答

0

在PHP中只使用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); 
?> 
相關問題