2017-04-18 19 views
0

私はユーザからの入力としてnameemailを取る簡単なユーザー登録Webアプリケーションを開発しています。オンラインデータストアとしてFirebaseを使用しました。 (jQueryのを使用します)FirebaseからHTMLページにデータを引き出す方法は?

databaseRef.orderByKey() 
    .once('child_added', function(snapshot) { 
    snapshot.forEach(function(childSnapshot) { 

     var childKey = childSnapshot.key; 
     var childData = childSnapshot.val(); 

     console.log("Key: " + childKey + "; Value: " + childData); 

     $('#nameValue').text(childData); 
     $('#emailValue').text(childData); 
    }); 
    }); 

HTMLコード:JavaScriptのファイル

<div class="table-responsive"> 
     <table class="table"> 
      <thead> 
       <tr> 
        <th>Name</th> 
        <th>Email</th> 
       </tr> 
      </thead> 
      <tbody> 
       <tr> 
        <td id='nameValue'></td> 
        <td id='emailValue'></td> 
       </tr> 

      </tbody> 
     </table> 
    </div> 
    </div> 

これはFirebaseの私のデータベース構造です。

users 
    | 
    -KhyubUqLRGUGW-rtija 
     |--- email: "[email protected]" 
     |--- name: "p1" 

ブラウザコンソールでこれらの値を取得できます。

Key: email; Value: [email protected] 
Key: name; Value: p1 

私はHTMLページに表示できません。私のHTMLページに内容を表示するために、JQuery関数に何ができるのですか?

これは、詳細を送信するときに表示される現在の出力です。

enter image description here

答えて

2

まず.text()は、あなたがそれを呼び出すたびに、それは以前のデータが上書きされます。すなわち、テキストを置き換えて、あなたが必要とする追加され

$('#nameValue').append(childKey); 
$('#emailValue').append(childData); 

代わりの

$('#nameValue').text(childKey); 
$('#emailValue').text(childData); 

を使用データを以前のデータに変換します。

第2に、テーブルにデータを追加する際に間違いがあります。何を行うべきことである:私はので、それは正しくないHTMLのテーブル構造につながる付加した後、あなたの...の行を削除した

<div class="table-responsive"> 
     <table class="table"> 
      <thead> 
       <tr> 
        <th>Name</th> 
        <th>Email</th> 
       </tr> 
      </thead> 

       <tbody id="data"> <!-- changed --> 

      </tbody> 
     </table> 
    </div> 
    </div> 

注意:更新されたHTMLコードで

$("#data").append('<tr><td>' + childKey + '</td><td>'+ childData+'</td></tr>'); 

。これは、あなたがW3school example が今では、あなたがあなたのデータベース内にあるkeysを指定することができ、あなたのテーブルの列の代わりに使用して、あなたのテーブルの<th>に固定値をハードコーディングする

+0

これはかなり近いです!しかし、最初のテーブルデータとして出力は '[email protected] p1'です。どのようにこれを洗練することができますか? – Chip

+0

?あなたはここで何を達成したいのですか? – warl0ck

+0

私は2つの列を持っています。 '名前'と '電子メール'。しかし結果は 'name'カラムにのみ追加されています。だから、どうすればそれらを分けることができますか?異なる列の各値。 – Chip

1

に適切に追加されますしたい構造体です。あなたはテーブルのデータでも同じことをすることができます。すなわちvaluesをそれぞれkeysとする。

はこれにあなたのHTMLコードを変更します。

<div class="table-responsive"> 
    <table class="table"> 
    <thead> 
     <tr id="keysRow"></tr> 
    </thead> 
    <tbody> 
     <tr id="valuesRow"></tr> 
    </tbody> 
    </table> 
</div> 

これはあなたのFirebaseからデータを取得する方法です。

databaseRef 
    .once('child_added', function(snapshot) { 
    snapshot.forEach(function(childSnapshot) { 

     var childKey = childSnapshot.key; 
     var childData = childSnapshot.val(); 

     console.log(childKey + " - " + childData); // Displays key with its value in your Browser Console 

     $('#keysRow').append('<th>' + childKey + '</th>'); 
     $('#valuesRow').append('<td>' + childData + '</td>'); 

    }); 
    }); 
+0

これは私が欲しかったものです。しかし、新しい提出物を作るときに値が並んで追加されています。 – Chip

関連する問題