如何使用GAE仅刷新部分页面

时间:2015-02-07 23:29:06

标签: javascript python google-app-engine web

我搜索了这个概念,但并不真正理解它是如何工作的。我的后端正在使用webapp2和GAE,我想刷新一个从我的数据库中提取的页面。

页面上还有其他内容,我只需要专门刷新表格内容。我目前正在使用

    <meta http-equiv="refresh" content="10">

每隔10秒刷新整个页面,但我需要的东西只刷新部分页面。任何JS或JQuery添加的解释都会很棒!

我真正不理解的部分是我必须在后端更改以允许这种更新。

1 个答案:

答案 0 :(得分:2)

一个简单的HTML占位符:

<div id="tablehere"></div>

每10秒AJAX轮询的Jquery代码:

setInterval(function(){
    $.ajax({ url: "http://yourapp.appspot.com/thetable",
             success: function(data) {
               maketable(data);
             }
          });
}, 10000);

JS制作并展示一个新表格(这里有一百万个替代品,我没有JS专家,这只是一种方式):

maketable = function(data) {
  var tabdiv = document.getElementById("tablehere");
  var tabhead = '<table><thead><tr><th>Col1</th><th>Col2</th></tr></thead><tbody>';
  for(var i=0,len=data.length; i<len; i++) {
    tabhead += '<tr><td>' + data[i].col1 + '</td><td>' + data[i].col2 + '</td></tr>';
  }
  tabhead += '</tbody></table>';
  tabdiv.innerHTML = tabhead ;
}

那就是客户端。

服务器端,app.yaml将有一个处理程序

url: /thetable
script: thetable.app
在所有需要的导入之后

并在thetable.py中:

class Tablerow(ndb.Model):
    col1: ndb.StringProperty()
    col2: ndb.StringProperty()

class Tablehandler(webapp2.RequestHandler):
    def get(self):
        data = [tr.to_dict() for tr in Tablerow.query().iter()]
        response.write(json.dumps(data))

app = webapp2.WSGIApplication([('/thetable', Tablehandler)])
Phew - 非常骷髅但仍然花了我很长时间才写作。但正如你所看到的那样,应用程序引擎部分非常简单 - 它是HTML,Javascript和Jquery方面,它占据了大部分的努力! - )