met*_*att 7 javascript ajax jquery xmlhttprequest
真的很简单的问题.我试图测试我正在开发的Restful webservice,并进行这个简单的ajax调用(使用jquery):
<script type="text/javascript">
$(document).ready(function() {
var url = '/index.php/gettest/reallyLongRequest';
$.ajax({
url: url,
dataType:'text',
success:function(data) { $('#result').html(data);},
error:function(xhr,err,e) { alert ("Error: " + err);}
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
这在页面加载时运行.当它正在运行时,页面正在阻塞; 即,(我可以看到鼠标指针旁边的沙漏)没有其他用户操作可以处理.(顺便说一句,这个特殊的获取请求 - 故意 - 需要很长时间才能返回).
为什么是这样?一个(异步)JAX对吗?显然我犯了一个初学者的错误.请问有什么想法吗?
当我使用普通的javascript(没有库)尝试这个时,它按预期工作.这是否与Jquery处理xhr onreadystatechange有关?
谢谢你的期待.
编辑:多人建议设置async:true,它发生时,是jquery中的默认值,因此没有任何效果.
编辑:如前所述,如果我使用普通的javascript并用计时器启动window.setInterval(function() { startLongPoll(); }, 5000)
它,例如,它按预期更新,而不会出现阻塞.想法,有人吗?
这是我为解决该问题所做的示例:
jQuery(document).ready(function() {
setTimeout(function () {
$.getJSON("veryLongRequest", function(json) {
alert("JSON Result: " + json[0].id);});
}, 500); // You may need to adjust this to a longer delay.
});
Run Code Online (Sandbox Code Playgroud)
注意:我使用的是简写 jquery 方法“getJSON”,它是数据类型设置为“json”的 ajax 调用的包装器。然而,这个解决方案适用于所有 ajax 请求。
参考:
加载 Comet/服务器推送 iframe 时停止浏览器“厄运的悸动”
| 归档时间: |
|
| 查看次数: |
12989 次 |
| 最近记录: |