2017-12-10 11 views
0

javascriptのJSONレスポンスから項目を選択したい。私はGETリクエストを呼び出しており、APIはJSONをリタイヤしています。JavascriptでJSONの項目を選択

GETのAPI: - https://autocomplete.clearbit.com/v1/companies/suggest?query=google.com

JSON: - [{"name":"Google","domain":"google.com","logo":"https://logo.clearbit.com/google.com"}]

私は、関数のname外の値を選択します。これは、

 var theUrl = 'https://autocomplete.clearbit.com/v1/companies/suggest?query='; 
     var q = "google.com"; 
     function httpGet(theUrl, q) 
     { 
      var xmlHttp = new XMLHttpRequest(); 
      xmlHttp.open("GET", theUrl+q, false); // false for synchronous request 
      xmlHttp.send(null); 

      return xmlHttp.responseText; 
     } 

     var a = httpGet(theUrl, q); 
     console.log(a.name); 

私のJavascriptのである。しかし、a.nameはあなたが文字列nameプロパティを読み取ろうとしているundefined

+1

"同期リクエストではfalse" - 危険:これはサイトに悪影響を与える機能です。そんなことしたらダメ。 – Quentin

+0

@GeorgeJempty - 非同期呼び出しではありません! – Quentin

+0

ええ、半日前に閉票を取り消しましたが、自動的に生成されたコメントは残っていました –

答えて

-2

を返しています。

JSONをJavaScriptデータ構造に変換するには、構文解析する必要があります(JSON.parse()メソッドを使用)。


これを実行したら、データ構造の右側の部分を調べる必要があります。

JSONは、nameプロパティを持つオブジェクトを含む配列で構成されています。

名前プロパティを読み取るには、配列からオブジェクトを抽出する必要があります。

1

ので、同様にあなたは、オブジェクトにそれを回すためにJSONとしてGoogleからの応答を解析する必要があります。

var theUrl = 'https://autocomplete.clearbit.com/v1/companies/suggest?query='; 
var q = "google.com"; 

function httpGet(theUrl, q) { 
    var xmlHttp = new XMLHttpRequest(); 
    xmlHttp.open("GET", theUrl+q, false); // false for synchronous request 
    xmlHttp.send(null); 
    try { 
    return JSON.parse(xmlHttp.responseText); 
    } catch (error) { 
    return null; 
    } 
} 

var a = httpGet(theUrl, q); 
if (a && a.length) { 
    console.log(a[0].name); 
} else { 
    console.log('no results found'); 
} 

Googleはまた、あなたがa[0].nameなくa.nameを行う必要がありますので、配列を返し、そして良い測定のために安全性チェックを追加してGoogleが実際にJSONを返すようにし、実際に名前を印刷しようとする前に少なくとも1つの項目があることを確認します。