2016-11-02 23 views
1

私はユーザ入力を求めており、入力値に基づいてjsonオブジェクトを返します。私は、返されたオブジェクトを取って、オブジェクトのいくつかのアイテムをテーブルの中に表示して、ユーザに見せたいと思います。私がこれをやっているやり方がもっとクリーンであるか、まっすぐであるかどうかはわかりません。ここjsonデータをフィルタリングしてテーブルに結果を表示する

は私がこれまで持っているものです。

htmlファイルに:

私のjsファイル内
<form> 
    <input type="text" id="searchValue" required> 
    <input type="button" value="Submit" 
     onclick="getData(document.getElementById('searchValue').value)"> 
</form> 

classrooms: Array[2] 
    0: Object 
    className: "math", 
    startDate: "1/1/2016" 
    ..... 
    1: Object 
    ....... 
    ....... 

function getData(userInput) { 
    return $.getJSON('url/info' + userInput); 
} 
$(function() { 
    getData().done(function(json) { 
     //what do i need to do here so that the contents of this object will be available in the html file. 
    }); 
}); 

返されるオブジェクトはのようになります

私は結果の返却時に表示されますテーブル形式で返された情報とディスプレイを利用したいLD:

<table id="classesOffered" class="hidden"> 
    <tr> 
     <th>Class Name</th> 
     <th>Start date)</th> 
     <th>Something else</th> 
    </tr> 
</table> 

答えて

0

対象として戻ってくるデータを仮定すると、あなたはこのような何かを行うことができます。それがjson文字列の場合は、forEach()を実行する前に解析する必要があります。

function getData(userInput) { 
    return $.getJSON('url/info' + userInput); 
} 
$(function() { 
    getData().done(function(json) { 
     var table = $('#classesOffered'); 
     json.forEach(function(class) { 
     table.append(
      '<tr>' + 
      '<th>' + class.className + '</th>' + 
      '<th>' + class.startDate + '</th>' + 
      '<th>' + class.somethingElse + '</th>' + 
      '</tr>' 
     ); 
     }); 

    }); 
}); 
+0

だから、僕はこれを試してみました - まず、私は 'forEach'が関数でないことについてエラーを得たので、私は' [] 'に' json'を変更し、私はページをレンダリングする際に、今、私はエラーを取得していないのですが、どちらも結果と一緒に私のテーブルを見ていません。これをデバッグする方法がわからない場合は、 – bluePearl

+0

'console.log(json)'が役に立ちます。私が言ったように、文字列の場合は、forEach()を使う前にデータを解析する必要があります。しかし、「返されたオブジェクト」は配列であり、最も確実にforEach関数があります。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach – Gavin

+0

文字列の場合、 'JSON.parse(json)'はあなたが探しているものです。 – Gavin

関連する問題