如何避免在非IE浏览器中使用pushState和$.ajax(hash)进行双重提交
How can I avoid double submissions with pushState and $.ajax(hash) in non-IE browsers?
Internet Explorer似乎是唯一一个不支持pushState来处理AJAX提交历史记录的主要浏览器。所以无论我在哪里:
$.bbq.pushState(hash);
在我的AJAX代码中,我必须添加另一行:
$.ajax(hash);
这当然会导致在所有支持通过pushState()提交的非IE浏览器中出现双重提交。
我能做些什么来避免这些双重提交?
仅当history.pushState
本机不支持时,才在条件语句中调用$.ajax(hash);
if (!history.pushState) {
$.ajax(hash);
}
我还建议使用一个唯一的包装器函数来重构代码,该函数接受哈希作为参数,并使用必要的逻辑,例如
var pushStateWrapper = function(hash) {
if (!history.pushState) {
$.ajax(hash);
}
else {
$.bbq.pushState(hash);
}
}
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- 如何通过ajax刷新JSF填充的javascript变量
- 如何在php文件中获取$.post-ajax传递的值
- Replacing $ .ajax?
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- Ajax发布表单序列化,发布引号'
- 通过Ajax将JavaScript函数传递给PHP文件
- ajax请求的顺序总是不同的
- 可以't使用Polymer's的核心ajax
- Ajax Live搜索发布到Laravel视图
- Ajax聊天消息重复而不仅仅是更新
- 从控制器返回后Ajax启动事件激发
- PHP AJAX图片上传示例不上传
- 从ajax请求中获取javascript对象
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 如何在Javascript中解析AJAX数组的特定部分
- 如何避免在非IE浏览器中使用pushState和$.ajax(hash)进行双重提交
- AJAX and setInterval for window.location.hash
- 在不使用hash#的情况下更新AJAX请求的URL
- 通过URL中的hash标记在页面加载时执行AJAX调用