2017-04-13 14 views
1

この関数は、JSONデータをエコーし​​、JSONオブジェクトをループし、新しいオブジェクトを作成し、この新しいオブジェクトを配列にプッシュするPHPスクリプトを呼び出します。機能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; 
 
    }

によって返された次の関数は、この関数を呼び出します。しかし、私は配列内のオブジェクトにアクセスする際に問題があります。コードを参照してください。最後の2行で

function initialTestLoaded() { 
 

 
       var allQuestions = getTestQuestions();     
 

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

コードは未定義の「のSerialNo」pptyにアクセスすることができないというエラーを返します。

ここに質問を投稿するのは初めてのことです。ここの良い人たちは、いつものように大きな助けになると信じています。おかげで、PHPで

+0

いいえ、ちょうどその(真の$ JSON、)json_decodeを使用して、PHPのJSONレスポンスを渡すを使用します配列に変換する。その配列を使用して、配列内の要素にアクセスします。 $ array ['passage']のようになります。 –

+0

'$ .getJSON'は非同期関数であり、' getTestQuestions'関数は決して結果を待たず、常に未定義値を返すために起こります。 –

+0

ありがとうございます。エコーする前に、まずjson_decodeをPHPで行う必要がありますか?ほとんどの記事は、json_encodedオブジェクトがjavascriptにあるようにアクセスすることを推奨しています。私の挑戦は、私はjavascriptのjson_encodedオブジェクトにアクセスすることはできませんが、すべてのエントリをループし、それらを1つの関数の配列にプッシュした後、私はこれを呼び出すと、この返された配列の要素にアクセスするようです他の機能では機能しません。関数宣言内でConsole.logを実行すると、配列に適切な値が設定されていることが示されますが、呼び出し関数内では未定義が表示されます。私を案内してください。 – UfereP

答えて

0

はちょうどそれが自動的に変換されますjson_decode

json_decode($jsondata, true); 

Basicの例

<?php 
$json_string = 'https://example.com/jsondata.json'; 
$jsondata = file_get_contents($json_string); 
$obj = json_decode($jsondata,true); 
echo "<pre>"; 
print_r($obj); 
?> 
関連する問題