卡巴卡吧 2013-01-23 16:39
浏览 285
已采纳

onMouseOver 遇到Jquery的AJAX,为啥会有这蛋疼的结果

一个html的控件,当鼠标停在上面,onMouseOver就会js方法A(),
这个方法是这么写的:
function A(){
$.ajax({
type:"POST", //post请求
url:"url", //交互的后台url
async:true, //选择异步,这也是默认值
data:{数据}, //传输的数据
success:function(result){ //成功后的回调函数
alert(result);
}
});
}

现在问题是:
当鼠标停在html控件上(一直放着不那周),那么ajax请求会一直跟后台交互,从页面上看就是说一直alert(result)(关掉一个又弹一个,debug发现会不停后台发请求)。

请问这到底是为什么?我该设置为async:false后就一切正常了,但是既然用ajax,当然想用异步效果了,请问该如何做?

  • 写回答

6条回答 默认 最新

  • kellotao 2013-01-24 11:55
    关注

    你的这个代码不对。
    当鼠标移到该段文字上方,弹出alert框,你的主浏览器window就失去焦点了。等你按回车关闭alert框,鼠标回到主浏览器window,自然又重新触发onmouseover了。
    尝试用如下代码:
    [code="java"]

    $(document).ready(function(){ $("#b01").mouseover(function(){ htmlobj=$.ajax( {url:"/jquery/test1.txt", async:true, success:function(date){ $("#result").html(htmlobj.responseText + Date()); } }); }); });


















    鼠标停在这不动,弹出信息按回车


    [/code]
    把alert变为向div内写内容,你会发现,result div内的内容不变,而你移动鼠标重新触发onmouseover,时间戳会改变。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题