2012-04-05 2 views
1

Internet Explorer는 AJAX 전송에 대한 기록을 처리하기 위해 pushState를 지원하지 않는 유일한 주요 브라우저 인 것으로 보입니다. 그래서 모든 곳에서 내가 가진 : 물론이를 통해 제출을 지원하는 모든 비 IE 브라우저에서 이중 제출을 야기

$.ajax(hash); 

:

내 AJAX 코드
$.bbq.pushState(hash); 

, 나는 또 다른 라인을 추가해야 pushState().

두 번 제출을 피하려면 어떻게해야합니까?

답변

2

그냥 history.pushState이 기본적으로 지원되지 않은 경우에만 조건문에 $.ajax(hash); 전화

if (!history.pushState) { 
    $.ajax(hash); 
} 
나는 또한 예를 들어, 필요한 논리를 매개 변수로 해시를 받아들이는 독특한 래퍼 함수를 ​​사용하여 코드를 리팩토링하는 것이 좋습니다

var pushStateWrapper = function(hash) { 

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

좋아요. 응, 내가 리팩토링을해야 해. 그러면 해쉬로 pushStateWrapper를 호출할까요? pushStateWrapper (해시); – AKWF

+1

네, 이것이 목적입니다. (당연히 코드를 단순화했을 수도 있습니다. 단지 아이디어를 얻는 것입니다.) – fcalderan

관련 문제