【问题标题】:Ajax Request Freezes WebpageAjax 请求冻结网页
【发布时间】:2012-05-28 15:16:55
【问题描述】:

我正在尝试创建一种通用方式来在我的网页中调用 ajax 请求。我创建了一个不错的小扩展方法来异步调用发布请求。

$.tiqPost = function(action,data,callback)
{
    alert('Posting...');
    $.fancybox.showActivity();
    $.ajaxSetup({async:true});
    $.post('/portfolios/mod/t:'+action+'/',data,function(response)
    {
        callback(response);
        $.fancybox.hideActivity();
        alert('Finished Post.');
    });
    alert('Posting Set.');
}

但是,只要触发此请求,我的页面就会无限期冻结。在某些版本的 Chrome 中,它会冻结而没有反馈(单击停止工作,我无法关闭选项卡)。不过,在大多数其他浏览器中,它会显示“正在发布”,然后在没有到达“发布集”或“已完成发布”的情况下停止。

所以 Chrome 没有发现任何错误,只是冻结了。这对我来说非常令人费解。任何人有任何提示(甚至只是不同的实现)?

编辑:

并非每个请求都会发生这种情况。事实上,让我发布一些有效的案例和一些无效的案例。等等……

编辑编辑:

所以在这个例子中

$.tiqPost('newcat',{t:"n"},function(response)
                {
                    if(response)
                    {
                        $tabs.tabs('add','#tiq-tab-'+response,"New Category",0);
                    }
                });

我没有问题。然而:

$(this).bind('blur',function(postdata)
    {
        //blur
        if(postdata==null)
            postdata = {value:$(this).text()};
        $.tiqPost($(this).attr('id').replace('tiq-submit-',''),
            postdata,
            function (response) {
                $(this).text(response);
            });
        $(this).removeClass('tiq-editable-editstate');
        $(this).attr('contentEditable','false');
    });

导致冻结。

【问题讨论】:

  • 如果完全省略“ajaxSetup”会怎样?
  • 你能显示callback()中的内容吗?

标签: php javascript ajax google-chrome


【解决方案1】:

在做

$.post('/portfolios/mod/t:'+action+'/',data,function(response)
    {
        callback(response);
        alert('Finished Post.');
    });

一个人,行吗? 如果是这样,那么您可能在配置函数本身时遇到问题

【讨论】:

  • 这应该是评论而不是答案。它没有回答问题。
猜你喜欢
  • 2012-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-02
  • 1970-01-01
相关资源
最近更新 更多