Javascript 如何避免在非IE浏览器中使用pushState和$.ajax(散列)进行双重提交?
Internet Explorer似乎是唯一不支持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); } 我还建议使用唯一的包装函数
$.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(散列);是的,这就是目的(当然,我可能会将代码过于简化,只是为了让您了解这个想法)