2014-07-12 132 views
1

位heisenbug在这里...jquery SLOW调用get或post

在这里有一个PHP/codeigniter应用程序。很确定控制器/型号等是健全的,没有错误。总得是一个客户端的问题...

非常简单的代码像这样的页面:

<div id="stuff">I'm empty now!</div> 

<script language="javascript"> 
$(document).ready(function(){ 
    var stuffID = <?=$id?>; 
    $.post('/event/viewStuff/'+stuffID, 
     function(response) { 
      $('#stuff').html(response); 
     } 
    ); 
}); 
</script> 

负载上述的“东西”,现在div有东西一格,加上链接后通过他们10的时间,这看起来像此页:

<a href="#" onclick="$('#stuff').html('Wait please...'); $.get('http://localhost/event/viewInvitees/22/30', function(response) {$('#stuff').html(response); }); return false">Next Page</a> 

但我点击这些链接,每一次,页面冻结为4-5秒,做什么我不知道 - 没有网络活动,不没有铬调试器。然后,“stuff”div重新加载结果。另外 - “Please wait”消息未显示。奇怪的是 - 当我抽出“document.ready()”函数时,重新加载页面,只需点击上面那个裸露/硬编码的分页链接,事情就会像预期的那样快速消失。

非常感谢您花时间阅读。

NEW INFO:

Xdebug的曲线显示任何不寻常 - 约1秒的功能呼叫返回给控制器/视图预期返回的内容。

Chrome的探查表明这一点 - 一个愚蠢的,不明原因的闲置:

enter image description here


的 “b.event.remove()” 的jQuery函数,要带6+秒的任何额外的洞察力?这似乎是问题?

+0

你为什么在你的jQuery中使用php direktly?我的意思是,如果你使用ajax/jquery post ...你可以用json处理这个。不建议像你这样做这个! – Dwza

+0

听起来像请求正在同步发送,但我不知道为什么会因为你使用'$ .get()'。这是什么版本的jQuery? –

+0

@Dwza我用3个不同的PHP视图构建这个页面 - 包装器有我需要使用的整体“stuff”标识符。 – user3550402

回答

1

固定它 - 但不明白的根本原因:

如上所述 - 每当我点击“下一页”链接时出现了一个巨大的延迟。

Javascript分析证明,jquery 1.9.1挂在b.event.remove()上约6秒钟。不知道为什么。我心想:“嗯......也许我已经触发了一些奇怪无效的拆卸功能,那#stuff div比较大(很多子表格等)。”

所以,我想加入这个命令将链接点击代码首先清除出来:

$('#stuff').html(''); 

没有骰子。然后我尝试:

$('#stuff').empty(); 

同样的交易 - 花了更长的时间。

在一个云雀我又试图非jQuery的方法:

document.getElementById('stuff').innerHTML = ''; 

它的工作!剩下的点击代码立即执行 - 不再拖延!

问题是为什么??????

谢谢大家!

0

尝试在mysql中PDO使用127.0.0.1代替localhost

是这样那是成本表现......所以只是测试它。

+0

谢谢 - 试过这个,但没有运气。得到一些代码怪异... – user3550402