使用AJAX只能加载一次页面吗?

时间:2010-05-02 09:53:07

标签: jquery ajax

一旦页面加载,我就有一个AJAX调用来加载一个函数,该函数打开一个灯箱和一些带有一些数据的框架。问题是,如果我点击关闭(灯箱框架),页面会一次又一次地加载框架,因此在无限循环框架加载时,使用永远不会到达框架层下的页面。 Ajax正在重复调用我猜的函数,但我想加载一次框架,当用户点击X(关闭)时,他可能会返回到原始页面。

$(document).ready(function(){
var city = $('#citycode').html();

$.ajax({
//when page is loaded, fire the following function
success: function(){
//the function to be fired located in the page in seperate file
openX(city + //some other parameters);
}});


});

任何提示?

3 个答案:

答案 0 :(得分:4)

您可以在页面顶部设置一个全局变量,并在页面加载后将其设置为true,然后在代码中检查变量是否false加载页面不是其他明智的。这是原型:

<script type="text/javascript">

var loaded = false;

$(document).ready(function(){
var city = $('#citycode').html();

$.ajax({
//when page is loaded, fire the following function
success: function(){
if (loaded === false)
{
  //the function to be fired located in the page in seperate file
  openX(city + //some other parameters);
  loaded = true;
}
}});


});
</script>

答案 1 :(得分:1)

jQuery可能会添加一个随机“缓存”参数来禁止缓存。尝试在ajax调用中将cache属性设置为true以允许缓存;您的代码可能如下所示:

$.ajax({
  cache: false;
  success: function(...){...},
  ...
});

答案 2 :(得分:1)

我用与其他答案不同的方式解释了你的问题,所以这里......:)

我猜测关闭按钮是一个超链接,并且没有阻止默认操作(更改页面的URL)?

如果这听起来正确,您需要通过捕获链接上的click事件并调用preventDefault()方法来阻止默认操作。

没有看到你的代码,这是我能给出的最好的例子:

$('div.lightbox').live('click', function (event) {
  event.preventDefault();
});

请注意此处使用live()