Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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 如何避免在非IE浏览器中使用pushState和$.ajax(散列)进行双重提交?_Javascript_Jquery_Ajax_Pushstate_Jquery Bbq - Fatal编程技术网

Javascript 如何避免在非IE浏览器中使用pushState和$.ajax(散列)进行双重提交?

Javascript 如何避免在非IE浏览器中使用pushState和$.ajax(散列)进行双重提交?,javascript,jquery,ajax,pushstate,jquery-bbq,Javascript,Jquery,Ajax,Pushstate,Jquery Bbq,Internet Explorer似乎是唯一不支持pushState来处理AJAX提交历史记录的主要浏览器。因此,无论我身在何处: $.bbq.pushState(hash); 在我的AJAX代码中,我必须添加另一行: $.ajax(hash); 这当然会导致在所有支持通过pushState()提交的非IE浏览器中出现双重提交 如何避免重复提交?只需调用$.ajax(散列) if (!history.pushState) { $.ajax(hash); } 我还建议使用唯一的包装函数

Internet Explorer似乎是唯一不支持pushState来处理AJAX提交历史记录的主要浏览器。因此,无论我身在何处:

$.bbq.pushState(hash);
在我的AJAX代码中,我必须添加另一行:

$.ajax(hash);
这当然会导致在所有支持通过pushState()提交的非IE浏览器中出现双重提交

如何避免重复提交?

只需调用
$.ajax(散列)history.pushState
时,条件语句中的code>

if (!history.pushState) {
   $.ajax(hash);
}
我还建议使用唯一的包装函数重构代码,该包装函数接受散列作为参数,并带有必要的逻辑,例如

var pushStateWrapper = function(hash) {

    if (!history.pushState) {
       $.ajax(hash);
    }
    else {
       $.bbq.pushState(hash);
    }
}

伟大的是的,我需要重构。然后我就用我的哈希调用pushStateWrapper吗?pushStateWrapper(散列);是的,这就是目的(当然,我可能会将代码过于简化,只是为了让您了解这个想法)