2

我有一个由 PHP 呈现的复杂页面,并希望通过 AJAX 长轮询使页面的所有元素保持最新。是否有某种通用/聪明的方法来设计基础设施来支持这一点,而不必手动指定要更新的每个元素?只是在寻找想法。谢谢!

4

5 回答 5

4

使用 jQuery,我将发送一个逗号分隔的 jQuery 选择器列表以更新到服务器。服务器最终将通过读取这些选择器并生成 HTML 以填充与选择器匹配的元素来响应:

$.get("/updater", { elementsToUpdate: "#someDiv,#someTable,#someOtherElement"}, function(json) {
      $.each(json, function(k, v) {

        // the key is the selector, the value is the 
        // HTML to set to that (or those) element(s):
        $(k).html(v);
      });    
}, "json"); // we are expecting the server to return JSON

服务器将通过向客户端发送 JSON 来响应,其结构如下:

 {"#someDiv":"this is some HTML to fill up div with ID someDiv","#someOtherElement":"here is some more HTML","#someTable":"here is some more HTML"}
于 2010-02-26T16:27:04.880 回答
0

将您的页面元素结构保持为私有数据,并让公共元素更新它们

var page = (function(){
    var private_data = {
    //json
    };

    return {
        workOnData : function(){//process the data}

    }
})()

这是保持页面数据安全流畅的好方法。

于 2010-02-26T16:22:18.770 回答
0

您可以轮询返回页面的 json 编码结构的页面,例如:

var page = {
    'elem1': {
        'html': '<div>... ',
        'update': True
    },
    'elen2': {
        'update': False

依此类推,然后更新必要的内容,只有一个民意调查。

于 2010-02-26T16:11:28.207 回答
0

可能会为所有要通过 ajax 更新的元素添加一个特殊的类,并且您还可以在其他一些属性中编码额外的数据,例如

<a class="ajaxUpdate" data="{'a':'json or whatever', 'put whatever here':'ok'}">test</a>

然后使用 jquery,您可以轻松地提取该数据并对其进行评估,并在您的 ajax 中使用它

于 2010-02-26T16:12:10.903 回答
-1

如果我是你,我会使用 jQuery 来做到这一点:那么你可以做类似的事情......

$('div.updateThisClass').css('color','#fff')

于 2010-02-26T16:19:08.420 回答