2016-08-26 8 views
0

外部のJSONファイルからデータを読み込んで表示し、HTMLを使用して表示したいと考えています。JSONからデータを読み取り、htmlで表示

私がこれまで持っている:

Javascriptを:

var xmlhttpRoles = new XMLHttpRequest(); 
var urlRoles = "../portal/getResults.php"; 

xmlhttpRoles.onreadystatechange = function() { 
    if (xmlhttpRoles.readyState == 4 && xmlhttpRoles.status == 200) { 
     var rolesArray = JSON.parse(xmlhttpRoles.responseText); 
     functionRoles(rolesArray); 
    } 
}; 
xmlhttpRoles.open("GET", urlRoles, true); 
xmlhttpRoles.send(); 

function functionRoles(arr) { 
    var out = ""; 
    var i; 
    alert(arr); 
    for(i = 0; i < arr.length; i++) { 
     out += '<p>' + arr.results[i].Title +'</p>'; 
    } 
    document.getElementById("id02").innerHTML = out; 
} 

getResults.phpファイル出力:

{ 

"results": [ 
    { 
     "DocId": 2204, 
     "Title": "Lorem ipsum dolor sit amet, consectetur", 
     "Locations": [ 
      { 
       "State": "New York", 
       "City": "" 
      }, 
      { 
       "State": "New York", 
       "City": "New York City" 
      } 
     ], 
     "Topics": [ 
      3, 
      7, 
      11 
     ], 
     "PublicationYear": "2011", 
     "Organization": "New Yorks Times", 
     "WebLocation": "www.google.com", 
     "Description": "Lorem Ipsum" 
    } 
], 
"TotalMatches": 1 

} 

HTML:私がしようとしている

<div id="id02"></div> 

ティの価値を得るその他の要素が含まれていて、失敗しています。私は何が間違っているのか分かりません。

+0

投稿したJSONが無効です。 –

+0

私は今編集しました。申し訳ありません。 – user3715910

+0

あなたはアラートまで進んでいますか?その時点でデータは大丈夫ですか? – wazz

答えて

0

JSONはオブジェクトであり、オブジェクトには長さプロパティはありません。あなたの条件を変更する必要があると思います:

for(i = 0; i < arr.results.length; i++) { 
    out += '<p>' + arr.results[i].Title +'</p>'; 
} 
+0

@ user3715910これは正しく見えます。そして、TotalMatchesにアクセスするには、arr.TotalMatchesを使用する必要があります – wazz

+0

これはうまくいきました!以前の条件は、jsonが次のときに機能しました: [{"ID":1、 "出版年": "N \/A"}、{"ID":2、 "PublicationYear": "2016"}、{" {ID ":39、"出版年 ":" 1975 "}、{" ID ":4、"出版年 ":" 2013 " :40、 "PublicationYear": "1972"}] 私は同じ方法を試していました。答えをありがとう! – user3715910

関連する問題