2

我正在尝试使用 $.ajax 在 div 内打开异步页面,但是单击链接后我仍然有大约 3 秒的延迟,并且该时间页面被卡住了。至少会发生 chrome 和 sasfari。我在哪里走错路了..?

$.ajaxSetup({
    async: true
});
$(document).ready(function() {
    $("#Button").click(function(evt) {
        $('#change').html('<p><img src="ajax-loader.gif" width="15" height="15" /></p>');
        $.ajax({
            url: "reg.php",
            cache: false
        }).done(function( html ) {
            $("#change").html(html);
        });
    });
});
4

2 回答 2

1

不,像这样的异步 ajax 请求不会阻止浏览器。问题出在其他地方,在您未显示的代码中。您显示的代码将正确执行异步请求。

推测我们看不到的可能存在的问题:

  1. 如果链接有href,则您不会取消默认操作,因此它可能正在加载页面。evt.preventDefault()您可以通过在单击处理程序中调用或return false;在其末尾执行(这样做并停止传播)来防止默认设置。

  2. 如果您在其他地方将其他代码设置async: false为默认值,那么您ajaxSetup将其改回可能不会被调用。

于 2013-07-11T17:13:51.600 回答
0

如果您使用的是 PHP 会话,那么脚本将暂停浏览器,直到 reg.php 完全完成。

在 reg.php 中,您需要在某处添加:

session_write_close();

这将允许您读取会话数据但不能写入它。

之所以如此,是因为您可能永远不希望两个 ASYNC 脚本同时尝试写入会话。

于 2013-07-11T17:17:45.450 回答