2017-06-14 7 views
1

私は、複数のbigqueryクエリを実行し、結果をテーブルに並べ替えるサーバーサイドコードを用意しています。このサーバーサイドコードは、クライアントからのajax呼び出しによって呼び出されます。 私はサーバ側のコードからクライアント側にtable/divを送信してそこにレンダリングさせたいと思っています。それは可能ですか?html divをajaxに渡す

最初に実行するクエリがわからず、すべての結果が異なるため、JSON結果を呼び出すことでクライアント上にテーブルを作成できないようにしたいと思います。

function printResult(rows, queryNumber) { 
    console.log('Query No. '+queryNumber+' Results:____'); 
    var keys = []; 
    if (queryNumber == 1) { 
     var table = document.createElement('table'); 

     var td = []; 
     var tr = document.createElement('tr'); 
     for (var i = 0; i < rows[0].length; i++) { 
      var tn1 = document.createTextNode(rows[i].Content_title); 
      var tn2 = document.createTextNode(rows[i].Audience_Size); 

      td[i] = document.createElement('td'); 
      td[i].appendChild(tn1); 
      td[i + 1] = document.createElement('td').appendChild(tn2); 

      tr.appendChild(td[i]); 
      tr.appendChild(td[i + 1]); 
      table.appendChild(tr); 
      res.send(table); 
     } 
    } 
} 

Ajax呼び出し

Serverコード(app.js)(複数のAjaxの呼び出しはクエリごとに問題外でもある)

$.ajax({ 
    url: 'http://localhost:3000/example', 
    type: 'POST', 
    data: {showname: show, counter: uniquesOverallShowsCounter}, 
    dataType: 'text', 
    contentType: 'application/x-www-form-urlencoded', 
    success: function (data) { 




     document.getElementById('outputTables').appendChild(data); 


    }, 
    error: function() { 
     console.log("error"); 
    } 
}); 
+0

データの例を含めてください。 – Hitmands

+0

これは間違いなく動作しますが、あなたの 'res.send(table)'は現在間違った位置にあります。 forループの後に置きます。 –

+0

@DouwedeHaan「ノード上で「appendChild」を実行できませんでした:パラメータ1のタイプが「ノード」ではありません。 ajaxコールで。 –

答えて

1

をクライアント側でその追加のチェックを追加し、マークアップをレンダリングしていますが、コメントで指摘したように、データが返されるとの問題があります。

Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.

これは、あなたがにdocumentElement(すなわちdocument.createElement('div'))ではないのJavaScript、と子ノードを追加しようとしたときにスローされるエラーです。すでにjQueryを使用しているので、コードを簡単に変更できます。 AJAX呼び出しの成功機能で

、あなたが複数のAJAXを行うことができるようにしたい場合は

$('#outputTables').append(data); 

document.getElementById('outputTables').appendChild(data); 

を変更するには、(毎回1ページから呼び出すと、テーブルを変更します古いテーブルを新しいテーブルに置き換えるように)append(data)の代わりにhtml(data)を使用する必要があります。

+0

ありがとうございました! しかし、別のエラーが表示されています。エラー:TypeError:循環構造をJSONに変換しています。 これはapp.jsから来ています、おそらくres.send()関数から考えられます。すべての修正? –

+0

@HamzaMoiyadiクライアント側またはサーバー側にエラーが表示されていますか? –

+0

それはサーバー側に来ています –

-1

だから、単純に増やすことができますたとえば、 "queryProcessed"とヒットしたクエリに基づいて、あなたの応答jsonの1つ以上のパラメータ?

そして、はい、あなたができることを「queryProcessed」に基づいて

関連する問題