автозаполнение формы и отправка - PullRequest
1 голос
/ 09 февраля 2011

На моей странице 404 есть форма, которая автоматически заполняется адресом, который пытался найти пользователь. У меня также есть JavaScript, который затем автоматически отправляет эту форму.

Проблема в том, что после автоматической отправки он продолжает зацикливаться, а страница продолжает перезагружаться.

Я пытаюсь сделать так, чтобы код JavaScript запускался один раз, а затем останавливался. Сценарий запускается при загрузке страницы, и это вызывает цикл.

Результат: мне нужно, чтобы он запускался при загрузке страницы, перезагрузках страницы, код проверяет, останавливается ли уже одна перезагрузка, а затем останавливается.

Для своего теста я пытаюсь заставить его выдать предупреждение, которое гласит: «Я перезагрузил один раз», просто чтобы я знал, что это сработало.

Пока это мой код

<script type="text/javascript">
window.onload = function() { 
var grabedurl = window.location.href
document.getElementById('badurl').value=grabedurl;
if( history.previous != history.current ){alert('I reloaded once')}
else
setTimeout("document.getElementById('errorsubmit').click()", 3000);}
</script>

1 Ответ

1 голос
/ 09 февраля 2011

Что вы можете сделать, это добавить состояние страницы, которая уже была перезагружена или нет, в часть строки запроса URL-адреса. Это должно быть сделано в ваших form action, например action="?submitted"

window.onload = function()
{ 
    var form = document.getElementById("aspnetForm");
    form.setAttribute("action", form.getAttribute("action") + "&submitted");
    var grabedurl = window.location.href;
    document.getElementById('badurl').value = grabedurl;
    if (/submitted/.test(window.location.search.substring(1)))
    {
        alert('I reloaded once');
    }
    else
    {
        setTimeout("document.getElementById('errorsubmit').click()", 3000);
    }
}

Однако вы можете рассмотреть альтернативные подходы, такие как отправка формы через XMLHttpRequest; наличие другой отдельной страницы action для отправки формы или наличие запроса на сервере на сервере.

...