非常简单的问题。我尝试测试我正在开发的 Restful Web 服务,并进行这个简单的 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>
它在页面加载时运行。当它运行时,页面是阻塞的;即(我可以看到鼠标指针旁边的沙漏)无法处理其他用户操作。 (顺便说一句,这个特定的获取请求——故意的——需要很长时间才能返回)。
为什么是这样? A(异步)JAX 对吗?显然我犯了一个初学者的错误。有什么想法吗?
当我尝试使用纯 JavaScript(无库)时,它会按预期工作。这与 Jquery 对 xhr onreadystatechange 的处理有关吗?
谢谢您的关注。
编辑:很多人建议设置 async: true ,这恰好是 jquery 中的默认值,因此没有效果。
编辑:如前所述,如果我使用纯 JavaScript 并使用计时器启动它,例如,window.setInterval(function() { startLongPoll(); }, 5000)
它按预期更新,不会出现阻塞。有想法吗?