2011-11-22 54 views
0

予加载数据的jQuery AJAX设定为如何在JQuery中记住下一个AJAX加载的变量?

$(function(){ 
$('#next').submit(function(e){ 
e.preventDefault(); 
var form = $(this); 
var page = form.attr("action") 
    $.ajax({ 
    type: 'POST', 
    url: page, 
    success: function(html){ 
    $("#results").append(html); 
    } 
    }); 
}); 
}); 

形式是用行动= “load.php?页= 2” 的单个按钮。

当按下表格的提交按钮时,它会从load.php?page=2加载数据。如何在下次点击时记住此操作以从load.php?page=3加载数据?并阅读后续页面?

其实我想介绍一个新的变量,页码会随着每次点击而增加。

+1

你还记得什么? 2号和3号?你通过$ _GET ['page']得到它们。如果你知道如何使用下面的数字来创建下一个请求,只需创建一个'并增加它的值。否则,请解释您想要记住的内容。 –

回答

1

你可以只设置一个javascript VAR来表示页,然后增加它在提交...

var page = 1; 
$(function(){ 
$('#next').submit(function(e){ 
e.preventDefault(); 

var form = $(this); 
    $.ajax({ 
    type: 'POST', 
    url: page, 
    success: function(html){ 
     $("#results").append(html); 
     page += 1; 
    } 
    }); 
}); 
}); 

我不知道您的原始网页中的var它有什么,但很明显,你会调整这个回应以满足您的需求。显然,你的url参数不会是单个数字,所以根据需要更新该部分。

+1

您可能想要调用变量'page_number'而不是'page',它将作为'data:{page:page_number}'传递,而不是在'url'中传递。你可能想把整个块放入一个闭包中,这样它就不会泄漏'page_number'变量。 (虽然如果这是你计划在上面的代码块所有的代码,那么这不是一个问题。) –

3

我将使用RegEx从action属性末尾切下数字,并将success处理器中的action替换为递增的页码。

我也将线b.attr("action")更改为form.attr("action"),因为我认为这是您的版本中的拼写错误。如果不能留在该行:)的原始版本

$(function(){ 
    $("#next").submit(function(e){ 
     e.preventDefault(); 

     var form = $(this), 
      page = form.attr("action"), 
      page_nr = (/\d+$/.exec(page) || ["2"])[0]; 

     $.ajax({ 
      type: 'POST', 
      url: page, 
      success: function(html){ 
       form.attr("action", page.substring(0, (page.length - page_nr.length)) + (+page_nr + 1)); 
       $("#results").append(html); 
      } 
     }); 
    }); 
}); 

例子:http://jsfiddle.net/WfrU7/

+0

谢谢约翰,是的,这是一个错字:) – Googlebot

+0

(+1)这是一个非常聪明的方式!我自己尽可能避免额外的编码(处理压力)。 –

1

来处理这些“需要保持的历史”,不管你信不信,一个DOM元素的最好方法。我们与编程,变量和文字紧密相连,我们只是忘记了事情的简单方面。显然,简单是没有人想到的。

所以,“简单”的解决方案是在页面的脚本加载,保存您的查询参数(页= 2 ... 2)上

<span id='curPageNumber' style='display:none; '> 
在加载页面

。在下一次调用中,您所需要做的就是例如onSubmit ='functionSubmit(); '和

function functionSubmit() { 
    var action="load.php?page="+$('#curPageNumber').text()*1+1; 
    $('#formID').attr('action',action); 
    $('#formID').submit(); 
}