При отправке формы по междоменному URL-адресу в iframe, как определить, успешна ли отправка?
Это, в принципе, сложно, поскольку из-за ограничений песочницы безопасности браузера у нас нет возможности получать информацию о страницах в разных доменах внутри iframe. Думая иначе, если вы изначально можете получить информацию о внутренней странице iframe, то, когда вы не можете ее получить, не означает ли это, что форма была отправлена ~
Гостевая книга бизнес-центра, предоставленная Baidu для пользователей, предлагающих ставки, использует этот метод.
Пример:
test.html:
код программы
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head>
<body style="background:#a7a7a7;">
<iframe id="testiframe" name="testiframe"></iframe>
<form Method="post" action=" http://www.test.com/testaction.asp " target="testiframe" name="testform">
<input type="text" name="dddd"><input type="submit" value="ddd" name="submitbtn"/>
</форма>
</тело>
<скрипт>
document.testform.onsubmit = функция () {
document.testform.submitbtn.disabled = правда;
ОтправитьМонитор()
;
функция submitMonitor () {
пытаться{
var hash = document.getElementById('testiframe').contentWindow.location.hash;
setTimeout (submitMonitor, 100);
} поймать (е) {
document.getElementById('testiframe').src = "about:blank";
document.testform.submitbtn.disabled = ложь;
}
}
</скрипт>
</html>
Программный код
testaction.asp
<%
Функция Sleep(n) 'Единица секунды с
Тусклое время начала
Время начала = Таймер
Выполните: Цикл до таймера>n+StartTime
Конец функции
Sleep(5) 'Задержка 5 секунд
Response.Write Request.Form("dddd")
%>
Недостатки:
Этот недостаток по-прежнему очевиден. Если это ошибка, такая как 404, 403, 500 и т. д., она будет ошибочно принята за успешную отправку. Однако это может быть.
программный код
setTimeout (submitMonitor, 100);
Добавьте проверку клиентской формы перед функцией, чтобы избежать этой проблемы.
Конечно, оценку статуса отправки междоменной формы также можно реализовать путем вывода сценария оповещения на стороне сервера.