2017-04-24 71 views
0

我對Polymer的動態表格組件有一些問題。這是我想實現的:我想發送一個帶有ajax請求的sql請求,並用該請求的響應更新表。Iron數據表問題

到目前爲止,我設法做的是發送我的sql請求,然後服務器用數據創建一個.json文件,然後使用另一個請求來獲取該文件並將其放入表中。

問題是我必須刷新整個網頁才能填滿表格。

有什麼辦法直接用第一個ajax請求的響應來更新表,而不是使用json文件嗎?

這裏是我的代碼:

<template> 
    <iron-ajax 
    id="request" 
    url="/request" 
    method="POST" 
    on-response="ajaxResult" 
    on-error="ajaxError" 
    content-type="application/json" 
    body: {id, Prio, Stat}></iron-ajax> 

<iron-ajax url="../data.json" last-response="{{data}}" auto></iron-ajax> 

<iron-data-table items="[[data]]" id="table123"> 
<data-table-column name="Title"> 
    <template>[[item.ID]]</template> 
</data-table-column> 
<data-table-column name="PRIORITY"> 
    <template>[[item.PRIORITY]]</template> 
</data-table-column> 
<data-table-column name="REQUEST_STATUS"> 
    <template>[[item.REQUEST_STATUS]]</template> 
</data-table-column></iron-data-table> 

</template> 

<script> 
    Polymer({ 
     is: 'gestion-ticket', 

    ajaxResult: function(e) { 
     //var Object=e.detail.response; 
     document.getElementById("table123").clearCache(); 

    }, 
    f: function(e) { 
     var body = { 
     "id": this.querySelector("#comment").value, 
     "Prio" : this.querySelector("#Priority").selected, 
     "Stat" : this.querySelector("#Status").selected 
     }; 
     this.$.request.body = body; 
     this.$.request.generateRequest(); 
     }, 
    ajaxError: function(event) { 
     console.log(event); 
     console.log(event.detail); 
     console.log(event.detail.request); 
     console.log(event.detail.request.xhr.response); 
    } 
    }); 
</script> 

我試過clearCache()函數來重置,但它不工作,我覺得這是我應該使用的功能,但我做的事這裏別的錯了。非常感謝您花時間幫助我。

回答

0

下面是如何正確地發送AJAX請求,得到響應和接收數據綁定到鐵的數據表:

<iron-ajax 
     method="POST" 
     handle-as="json" 
     id="iron_ajax_element" 
     on-response="recieve_responseHandler" 
     ></iron-ajax> 

..... 

    send_request: function() { 

      console.log('send_request:'); 

      var iron_ajax_element = this.$.iron_ajax_element; 


      //set AJAX URL point 
      iron_ajax_element.url = this.some_url; 

      //set AJAX params 
      var aniArgs = {}; 
      aniArgs['param'] = this.some_param; 
      iron_ajax_element.params = aniArgs; 

      //run AJAX 
      iron_ajax_element.generateRequest(); 
    }, 
    recieve_responseHandler: function(e) { 

     console.log('recieve_responseHandler:'); 

     console.log(e.detail.response); 
     var response = e.detail.response; 
     console.log(response); 

     //Bind the response to iron-data-table here, as: 
     this.iron_data = response; 

    }, 
+0

它的工作完美,謝謝了很多! :) – Exo