2013-04-17 2 views
1

В моей проверке на стороне сервера формы я использую history.go(-1); для перенаправления обратно в случае ошибки проверки. Таким образом, данные формы остаются там, и пользователь может исправить данные и повторно отправить форму.Javascript/jQuery: Любое событие для history.go (-1)?

Он хорошо работает, пока я не использую капчу. Если пользователь отправляет неверный код, проверка сервера перенаправляет его обратно с помощью history.go(-1);. Таким образом, страница на самом деле не перезагружает и не обновляет изображение. Таким образом, пользователь продолжает отправлять неверный код.

Так что я могу вызвать событие или функцию каждый раз, когда страница перенаправляется обратно через history.go(-1);. Таким образом, я могу вызвать функцию, которая перезагрузит изображение captcha.

Я должен сделать это таким образом, потому что моя обработка формы выполняется на отдельном сервере.

Спасибо.

+2

'history.go (-1)' - ленивое решение, помимо того, как вы показываете ошибки, если возвращаетесь? – MMM

ответ

1

Ваше решение здесь заключается в том, чтобы сделать изображение captcha не кешируемым. Вам нужно указать сценарию captcha для отправки заголовка ответа с изображением либо с датой «expires» в прошлом, либо без кеша. Таким образом, браузер перезагрузит captcha на каждый history.go (-1).

0

Я думаю youu нужен адаптер истории:

History.Adapter.bind (window, 'statechange', function() {}); 

это вызовет несильно при каждом изменении истории государства.

0
var url = location.href; 
window.onpopstate = function(event) { 
    if(url != location.href) { 
     /*Your Function here 
     * I'm using this to load the contentBox when user goes back or forward in 
     * browserhistory -- perfect for sites with ajax 
     * works on all browser but u need Jquery. (Safari can't use window.location.href) 
     * for functions to add dynamic params or removing them just ask ;) 
     * define the url var to prevent function to fire on reload 
     */ 
    } 
}; 
Смежные вопросы