【发布时间】:2011-05-20 05:20:47
【问题描述】:
当我在 HEAD 部分使用 Ajax 调用(jquery)时,我在带有旋转圆圈的 chrome 浏览器上找到了“等待响应消息”。我不想要这种丑陋的样子。有没有办法避免这种情况?
PS:当我使用输入标签来调用 JavaScript(Ajax 调用)函数时,如
<input id="launcher" type="button" onfocus="go()" value="Go!"></input>
我看不到等候圈。因为我的程序应该自动调用该函数我不能使用这个方法。(如果我使用document.getElementById("launcher").focus()自动启动该函数,它再次显示等待圆圈。)我猜有一些不同的上下文来调用JavaScript函数。
更新这是我的示例代码
<HEAD>
<SCRIPT TYPE="text/javascript">
function go() {
$.ajax({
url: "/myService",
success: function(data){
document.getElementById("result_area").innerHTML = data;
go();
}
});
}
$(document).ready(function(){
go() //Here I want to Comet call;
});
go(); //should start automatically.
</SCRIPT>
</HEAD>
<BODY>
<!-- <input id="launcher" type="button" onfocus="go()" value="Go!"></input>
This doesn't show the waiting circle. Why? Use different call context? -->
<div id="result_area"></div>
</BODY>
【问题讨论】:
-
当你在头部调用
$.ajax时,你是否将它包裹在$(document).ready()中? -
@nrabinowitz 我会以 3:1 的比例说这是问题所在。这可能应该作为一个潜在的答案发布。 :)
-
基于您显示的代码片段确实有效(而不是实际上导致您出现问题的代码)我猜您正在执行同步请求,并且您在从头部调用它,因为它与生成初始页面所需的所有其他 HTTP 请求一起排队。这是相当疯狂的猜测,因为您没有向我们提供可以向我们展示实际情况的简化测试用例。
-
你为什么在你的成功函数中再次调用
go()?你想创建一个无限循环吗? -
是的,我用它来使用异步请求。我想不断地从服务器获取通知。如果我把这个代码放在 HEAD 之外,它可以解决问题吗?我认为 BODY 标签中的代码无法解决这种情况。我应该把这段代码放在哪里?那么为什么它在输入标签中起作用?
标签: javascript jquery html ajax response