1

我正在尝试触发 ajaxStart 和 ajaxStop 事件以显示正在加载的消息,但我对如何执行此操作感到非常困惑。据我了解,这些事件是由每个 ajax 事件触发的,但我仍然不确定这到底意味着什么。单击 href 链接或提交按钮是否也会触发 ajax 事件?似乎不是因为单击超链接或按钮时,我下面的代码中没有出现任何警报。我刚开始学习 JQuery,我可能缺少一些明显的东西。

有人可以解释如何使这项工作?

我的<head>标签里有这个

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>

这就在开始<body>标签之前:

<script language="JavaScript" type="text/javascript">

// prepare the form when the DOM is ready 
$(document).ready(function() { 
$(document).ajaxStart(function() {
    alert('ajaxStart');
    $('#ajaxBusy').show(); 
});
$(document).ajaxStop(function() {
    alert('ajaxStop');
    $('#ajaxBusy').hide(); 
});

</script>

编辑: 我想通过单击一个 href 链接来使加载弹出窗口出现,从而触发 ajaxStart 事件。链接调用的另一个页面需要相当长的时间来加载,我希望同时出现加载消息。

<a href="http://www.mysite.com/long-loading-page.php">link</a> 

我将如何使用 ajax 事件来做到这一点?

4

2 回答 2

4

要使 AJAX 事件触发,您必须启动 AJAX 请求

这意味着$.ajax, $.get, $.post,$.load等。

单击链接或按钮将不起作用。click但是,您可以为每个元素注册自己的处理程序,a以便它用于$.load检索请求的 URL,然后使用该新内容更新 DOM。不过,这绝对不能算作“初学者的 jQuery”。

更好的解决方案可能是让页面使用document.write或类似的方式在页面加载时弹出弹出窗口,然后在完成后将其删除。

于 2012-09-20T13:08:03.107 回答
0

ajaxStart并且ajaxStop是每当发出任何 AJAX 请求时触发的jQuery事件。在这里阅读:http: //api.jquery.com/ajaxStart/ jQuery 有一个很好的文档。

当您单击链接或提交按钮时,浏览器只需加载一个新页面,而无需启动任何 AJAX 请求。

于 2012-09-20T13:16:39.357 回答