0

我不熟悉 jQuery,搜索给我的答案与我所寻找的完全不同。

我正在使用 ajax 从从数据库加载的 PHP 脚本加载数据。我想加载新数据而不是加载已经显示的旧数据。我想出了使用要从中提取数据的表中的最高索引值来执行此操作的想法,这很容易。用 PHP 做这件事没问题,但让一个循环继续下去是困难的部分。

我的 PHP 脚本输出粘贴在接收页面中的 HTML。我需要该页面从我的页面接收一个变量,以便在下一个请求时它可以提交最高索引值以防止重复。现在这就是问题所在。

jQuery AJAX 接收数据类型“HTML”。如何将变量与 HTML 一起传递,以便可以更新脚本。

程序工作原理总结:

-Page.php sends an ajax(GET) request to script.php with a few variables
-Script.php receives the request and processes the variables
-Script.php finishes processing and outputs HTML
-(I want script.php to send variables to page.php that can be identified separately from the HTML)
-Page.php receives HTML and appends it
-(I want those variables to be added to the Jquery variables so they can be sent on next request)

现在如何做到这一点是个问题。我对jQuery不太熟悉,所以我不确定它是否可以正常完成。

4

1 回答 1

1

如果项目的标记不复杂,我通常会以 json 格式获取数据,然后在 js 中进行标记。

例如,假设这是我们返回的 json 数据:

{
   "offset": 0,
   "limit": 5,
   "results": [
      { "id": 1, "name": "something"},
      { "id": 2, "name": "something2"},
      { "id": 3, "name": "something3"},
      { "id": 4, "name": "something4"},
      { "id": 5, "name": "something5"}
   ]
}

我们可以使用offsetandlimit作为该响应对应的数据的 SQL 的一对一。所以这使得 jquery 是这样的:

function getResults(limit, offset) {
    $.getJSON('getitems.php', {'limit': 5, 'offset': 0}, function(data){
       var tpl = '<div id="result-_ID_">_NAME_</div>',
           html = '';  
       if(data.results.length > 0) {
         $.each(data.results, function(i, obj){
             html += tpl.replace('_ID_', obj.id).replace('_NAME_', obj.name);
         });

         $(elementToAppendTo).append(html);

         // there could be more left so lets do it again, with the offset incremented
         // to get the next set ie. offset = 0+5 = 5
         getResults(data.limit, data.offset+data.limit);
       }
    });
}

当然,这个例子会一直调用它自己,我假设你想要一些用户操作来确定何时调用下一组项目,但这应该说明一般的想法。

于 2013-03-02T03:54:56.013 回答