能否存储来自上一个请求的Ajax变量值?
我有下面的jQuery Ajax代码,如果不在能否存储来自上一个请求的Ajax变量值?,ajax,jquery,Ajax,Jquery,我有下面的jQuery Ajax代码,如果不在$(“#imgNum”).change(function(){})中定义页面变量,似乎(除非我误解了这个问题),函数后面的ajax调用将不会启动 由于page变量是根据按钮的点击时间设置的(fire自己的ajax调用),我想知道是否有办法将page设置为等于上次设置的值?除非有其他方法保存此值以调用它,并在每次执行某个函数时刷新它 jQuery: function loadData(page, value){ loading_show();
$(“#imgNum”).change(function(){})中定义页面
变量,似乎(除非我误解了这个问题)代码>,函数后面的ajax调用将不会启动
由于page
变量是根据按钮的点击时间设置的(fire自己的ajax调用),我想知道是否有办法将page
设置为等于上次设置的值?除非有其他方法保存此值以调用它,并在每次执行某个函数时刷新它
jQuery:
function loadData(page, value){
loading_show();
gallery_hide();
$.ajax
({
type: "GET",
url: "new_arrivals_data.php",
data: {page:page, imgs:value},
success: function(msg) {
gallery_show();
$("#gallery_container").ajaxComplete(function(event, request, settings)
{
gallery_show();
$("#gallery_container").html(msg);
});
},
error: function(jqXHR, textStatus, errorThrown) {
// Tell the human that something broke.
},
complete: function() {
// This is always called regardless of success or failure.
loading_hide();
}
});
}
loadData(1); // For first time page load default results
$('#gallery_container .pagination li.active').live('click',function(){
var page = $(this).attr('p');
loadData(page);
});
$('#go_btn').live('click',function(){
var page = parseInt($('.goto').val());
var no_of_pages = parseInt($('.total').attr('a'));
if(page != 0 && page <= no_of_pages){
loadData(page);
}else{
alert('Enter a PAGE between 1 and '+no_of_pages);
$('.goto').val("").focus();
return false;
}
});
$("#imgNum").change(function(){
var sel = $(this);
var value = sel.val();
//THIS IS WHERE I WANT TO DEFINE THE PAGE BASED ON IT'S MOST RECENT VALUE
var page = ?;
loadData(page, value);
})
//You should store the current selected option in a cookie
//For the sake of the example i'll set the default permanently to 12
var imgNum_selected = 16;
//set the initial selected option and trigger the event
$("#imgNum [value='"+imgNum_selected+"']").prop("selected","selected").change();
函数加载数据(页面,值){
加载_show();
画廊藏品();
$.ajax
({
键入:“获取”,
url:“new_arrivals_data.php”,
数据:{page:page,imgs:value},
成功:功能(msg){
画廊(展览);
$(“#gallery_container”).ajaxComplete(功能(事件、请求、设置)
{
画廊(展览);
$(“#图库"容器”).html(msg);
});
},
错误:函数(jqXHR、textStatus、errorshown){
//告诉那个人有东西坏了。
},
完成:函数(){
//无论成功或失败,这总是被称为。
加载_hide();
}
});
}
加载数据(1);//首次页面加载默认结果
$('#gallery_container.pagination li.active').live('click',function()){
var page=$(this.attr('p');
装载数据(第页);
});
$('gobtn').live('click',function(){
var page=parseInt($('.goto').val());
var no_of_pages=parseInt($('.total').attr('a');
如果(page!=0&&page听起来您有一些状态要在多个函数之间共享。共享此状态的一种方法是使用全局变量
一种类似但更受控制的方法是利用词法作用域。创建一个函数,然后在该函数体中创建共享变量。在该函数体的词法作用域中定义的函数可以自由访问该共享变量。词法作用域之外的任何人都不能直接接触该变量
例如:
var funcs = (function() {
var sharedState = 0;
var f1 = function() {
sharedState++;
};
var f2 = function() { return sharedState; };
return { 'f1': f1, 'f2' : f2 };
}());
funcs.f1();
alert(funcs.f2());
funcs.f1();
alert(funcs.f2());
// sharedState = -20; // should error out, because sharedState can't be
// accessed directly.
在您的特定环境中,您可以执行以下操作:
(function() {
var page;
// ... rest of your code, but in your loadData function, assign to page.
}());
请参阅:了解更多信息。我通过在HTML标记的属性中回显PHP变量解决了这个问题:
<b id='cur_page' cur_page='" . $cur_page . "'></b>
我不确定这是否是最好的方法,但它是有效的。有什么想法吗?我不清楚这个问题………@K.B好的,我非常乐意澄清。你不明白什么?基本上,有三个jQuery事件可以触发Ajax调用。最后一个事件需要定义页面
变量,但必须是由于页面
仅在单击某个内容时定义,我不知道如何将先前为页面
设置的值传递为页面
的当前值。这更有意义吗?或者您必须将页面变量设为全局变量,或者将其保存在DOM中的某个位置并加载到imgnum中。@Pehmolelu那么这是否意味着即使变量依赖于客户端的输入,它也会保持上一次调用的值?您需要一个全局变量或者您需要一个会话变量HMMM听起来很有趣。我将进一步研究并尝试一下。谢谢。但是,好奇的是,它是否也能保持最新的值cookie中的变量?我在实现这一点上遇到了问题。你的字面意思是仅仅用(function(){var page;}());
来包围我的代码吗?我只是不确定要将你好心提供给我的示例代码放在哪里,以及放在里面的值是什么。
var page = $('#cur_page').attr('cur_page');