Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当鼠标输入页面上的元素时调用rest服务_Javascript_Jquery_Ajax_Rest - Fatal编程技术网

Javascript 当鼠标输入页面上的元素时调用rest服务

Javascript 当鼠标输入页面上的元素时调用rest服务,javascript,jquery,ajax,rest,Javascript,Jquery,Ajax,Rest,我的页面上有一个元素。当我用鼠标输入元素时,调用我的rest服务,从该服务获取数据,并显示包含该数据的工具提示。当鼠标离开元素工具提示隐藏时。在Chrome、Firefox和Opera中,一切都可以正常工作,但在Internet Explorer中则不行 jQuery(document).ready(function() { showAndHideTooltip(); }); showAndHideTooltip = function() { jQuery(document).

我的页面上有一个元素。当我用鼠标输入元素时,调用我的rest服务,从该服务获取数据,并显示包含该数据的工具提示。当鼠标离开元素工具提示隐藏时。在Chrome、Firefox和Opera中,一切都可以正常工作,但在Internet Explorer中则不行

jQuery(document).ready(function() {
    showAndHideTooltip();
});

showAndHideTooltip = function() {
    jQuery(document).on({
        mouseenter: function () {
            console.log("Enter start");
            jQuery(".tooltip").stop(
                    true, true).delay(1000).fadeIn(500);
            getData();
            console.log("Enter end");
        },
        mouseleave: function () {
            console.log("Leave start");
            jQuery(".tooltip").stop(
                    true, true).delay(1000).fadeOut(500);
            console.log("Leave end");
        }
    }, ".element");
}

getData = function() {
    jQuery.ajax({
    url : 'rest/data/',
    type : 'POST',
    dataType : 'json',
    async: false,
    success : function(data) {
        console.log("Success");
    },
    error : function(data) {
        console.log("Error: Get data");
    }
})
当我记录所有事件时,我会得到以下日志:

Enter start
Success
Enter end
Leave start
Leave end
所以一切都正确,但不是在IE中。当我在Internet Explorer中只输入一个元素时。 示例日志,当我在我的元素上只输入一个时:

Enter start
Success
Enter end
Leave start
Leave end
Enter start
Success
Enter end
Leave start
Leave end
Enter start
Success
Enter end
Leave start
Leave end
Enter start
Success
Enter end
Leave start
Leave end
Enter start
Success
Enter end
Leave start
Leave end
Enter start
Success
Enter end
Leave start
Leave end
Enter start
Success
Enter end
所以我在InternetExplorer中得到多次调用,而在其他浏览器中我只得到一次调用。此外,在最后一次调用中,鼠标离开事件不会执行,工具提示也不会消失

当我在我的事件中删除invokerest服务时,所有浏览器中的一切都很好

我认为问题在于我的ajax请求中的set
async:false
,但当我将false改为true时,上述问题也会出现在Internet Explorer和Firefox中

有人知道如何解决这个问题吗?如何在鼠标事件中正确处理对rest服务的调用

jQuery throttle/debounce允许您对函数进行速率限制 多种有用的方法。将延迟和回调传递给$.throttle 返回一个新函数,该函数每延迟执行不超过一次 毫秒

删除
async:false
然后使用


请将您的HTML添加到问题中。它是一个简单的div。在没有IE的所有浏览器中,一切都很好。可能与此处的问题相同:
$.throttle( 250, getData);