如何通过jQuery AJAX更新值

时间:2011-11-24 13:18:40

标签: javascript ajax jquery

我将jQuery AJAX的页面内容加载为

$(document).ready(function(){
 $('#next').click(function(event){
  $.ajax({
  url: "load.php?start="+$('#lastid').text(), 
   success: function(html){
   $("#results").append(html);
   $("#lastid").empty().load('html #start');
   }
  });
 });
});

在当前文档中,我有<div id="lastid"></div>并在外部php文件中<div id="start"></div>

id =“start”的值从数据库更新,它将被转移到id =“lastid”。但是,此代码仅适用于FIRST单击。对于默认<div id="lastid">1</div>,当单击按钮(id =“more”)时,它将读取load.php?start = 1并将当前文档更新为<div id="lastid">11</div>(它是可见的)。但第二次点击不会加载load.php?start=11

似乎$('lastid')读取了<div id="lastid"></div>的默认值,但是$("#lastid").empty().load('html #start')

更新了{{1}}

如何修改此代码以便后续点击?

4 个答案:

答案 0 :(得分:3)

哇,太乱了!让我们清理一下:)

你需要摆脱id,因为id必须是唯一的,如果你将另一个id为last的id加载到你的站点,jQuery将不知道要获取哪个id。如果你有很多div,每个包含id,你可以使用(&#39; div:last&#39;)。text();

来读取最后一个id。

所以你的ajax看起来像这样:

$(document).ready(function(){
 $('#next').click(function(event){
  $.ajax({
   url: "load.php", 
   data: "start="+$('div:last').text()
   success: function(html){
     $("#results").append(html);
   }
  });
 });
});

我也不知道你在成功的最后一行做了什么,因为加载应该用来从服务器用ajax加载数据,你使用$ .ajax()做什么。此外,load()至少需要一个url作为参数,请参阅here

答案 1 :(得分:1)

尝试.live()函数而不是.click()

答案 2 :(得分:0)

您必须更改成功功能,因为点击两次时有多个#lastid

尝试类似:

success: function(html){
    $("#lastid").removeAttr("id");  // remove's the id from #lastid
    $("#results").append(html);     // appends the new one
    $("#lastid").empty().load('html #start');
}

答案 3 :(得分:0)

伴侣, 我从您的代码中看到的是,您在加载页面后附加事件。这会创建一个静态调用,静态值在您继续时不会更新。 我的建议是使用一个函数,它将Id动态地提供给你的ajax调用,如下所示:

$(document).ready(function(){
 $(document).on("click", '#next', function(event){
  $.ajax({
   url: buildurl(), 
   success: function(html){
   $("#results").append(html);
   $("#lastid").empty().load('html #start');
   }
  });
 });
});

function buildurl()
{
   return "load.php?start="+ $('#lastid').text();
}

这将强制您的事件始终调用此函数和函数以从lastid获取新值。 此致