我正在尝试将一些ajax内容加载到表中,遗憾的是它只是多次加载最后一行而不是加载每个新行。
这是我正在使用的代码:
function periodicRefresh()
{
$.ajax({
type: 'GET',
url: 'include/ajaxActions.php',
data: "action=displayLastEvent",
success: function(msg){
var newid = msg;
current = $("#list tr:first").get(0).id;
if(newid != current){
while (current<newid)
{
current++;
addToList(current);
}
}
}
});
}
function addToList(x)
{
$.ajax({
type: 'GET',
url: 'include/ajaxActions.php',
data: "action=displayRow&row="+x,
success: function(msg){
$("#list").prepend(msg);
$("#list tr:first").highlightFade({
speed:3000
});
lastrow = x-20;
$('#'+lastrow).remove();
}
});
}
displayLastEvent
返回最后一行的ID。
displayRow
返回最后一行
答案 0 :(得分:1)
您需要将xmlHttps推送到数组或抽象数据类型,然后可以附加事件处理程序。似乎jquery不会为你做那件事。
答案 1 :(得分:1)
我会通过鼓励你改变你的方法来解决这个问题,因为当你需要在列表中添加更多行(2+而不是2)时,你可能会发出超过必要的AJAX请求。
我会更新include/ajaxActions.php?action=displayRow
接受一个id of CSV(或者你传入的任何内容),然后返回一组行数据,而不是只返回一行的数据。
答案 2 :(得分:0)
我认为:
current = $("#list tr:first").get(0).id;
始终返回与jQuery
相同的结果,只记住第一次加载时的页面
例如,如果您有一个tr[id=0]
:
pass 1 : current = 0; msg = 1 -> 1 tr prepended with id = 1;
pass 2 : current is always 0 (not 1); msg = 1 -> 1 tr prepended with id = 1;
...
你应该做的是,在添加邮件后让jQuery
识别你的页面结构,或者以不同的方式存储最后一个索引:例如:hidden input
:
<input type="hidden" value="0" id="lastId"/>
初始化#lastId value
:
$(document).ready(function(){
$("#lastId").val(0);//or by using your displayLastEvent action
});
修改periodicRefresh
以阅读#lastId value
:
function periodicRefresh()
{
$.ajax({
type: 'GET',
url: 'include/ajaxActions.php',
data: "action=displayLastEvent",
success: function(msg){
var newid = msg;
var current = $("#lastId").val();
if(current<newid) $("#lastId").val(newid);
if(newid != current){
while (current<newid)
{
current++;
addToList(current);
}
}
}
});
}