내 웹 사이트는 hashchange에 의해 트리거되는 AJAX를 사용합니다 (책갈피에 더 친숙하게 만들기 위해). 내가 겪고있는 문제는 양식에서 "제출"을 클릭하면 $.post()
을 통해 전송 된 serialize()
인 모든 양식 데이터가 손실됩니다. 제출을 클릭하면 "Flag 1"알림이 표시되고 다른 여러 가지 테스트 (경고, 반향 등)를 통해 알 수 있기 때문에이 사실을 알 수 있습니다. 또한 URL을 변경하는 동안 내가 뭘하려고 오전해시 변경을 강제하는 가장 좋은 방법은 무엇입니까?
$(document).ready(function() {
var data = '';
var hash = '';
newPage();
alert('Flag 1');
$(window).bind('hashchange', function() {
hash = window.location.hash;
if (hash == '') {
path = window.location.pathname;
hash = '#' + path.replace(/^\/+/, '');
}
data += '&func=' + hash;
var xhr = $.post(hash, data, function(result) {
$("maincontent").html(result);
})
.done(newPage);
});
// Initialize vars and handle new form elements
function newPage() {
data = '';
$('form').submit(function() {
data = $(this).serialize();
// Flag 2 - What do I do here?
});
}
// Load ajax content on first run of document
if ($('#maincontent').html() == '')
$(window).trigger('hashchange');
});
수동으로 화재 hashchange 이벤트입니다 :
여기에 내 현재 코드입니다. 문제는 단지 window.location.hash = $(this).attr('action');
을 return false;
으로 설정하고 "플래그 2"주석이있는 경우 URL (... % 23 등)로 인코딩 된 hashmark로 인해 URL에 원치 않는 휴지통이 생길 수 있습니다. .
해시를 설정하는 가장 좋은 방법은 무엇이며 처음부터 내가하려고하는 일을하는 더 간단한 방법이 있는지 궁금합니다.
는