IE 11 не может отправить HTML-форму
у меня есть эта HTML-форма
<form name="nextform" action="anotherpage.php" method="post" enctype="multipart/form-data">
<input name="pinid" id="pinid" type="hidden">
<input type="submit" name="submit" id="post" value="Lets Go" class="formButtonMap">
</form>
pinid
динамически получает значение с помощью JavaScript. Когда он получает значение, Я предупреждаю его, и он работает.
но, когда я нажимаю ничего не происходит. Я вижу загрузку Internet Explorer в течение нескольких минут, а затем я получаю сообщение "веб-страница не отвечает". Если я нажму обновить, он перейдет в anotherpage.php
но значения из формы не поступили на сервер.
редко показывает это сообщение:
Visual Studio Just-In-Time Debugger
необработанное исключение win32 произошло в iexplorer.exe [688]
Можно Отладчики :
новый экземпляр Microsoft Visual Studio 2012
такое поведение наблюдается только в Internet Explorer 11.0.2. Форма работает в более старых версиях Internet Explorer, а также в Chrome и Firefox. Я не получаю ошибок в консоли IE.
здесь Код JavaScript, расположенный над формой:
// called when another button is clicked - basicaly is websockets
function save() {
var so = new WebSocket("ws://localhost:8000");
so.onerror = function (evt) {
alert('problem');
}
if (sara == 'LINES') {
so.onopen = function() {
so.send(JSON.stringify({
command: 'insertAll',
name: document.getElementById('name').value
}));
}
}
if (sara == 'POLY') {
so.onopen = function() {
so.send(JSON.stringify({
command: 'insertHalf',
name: document.getElementById('name').value
}));
}
}
so.onmessage = function (evt) {
var received_msg = evt.data;
document.getElementById("next").style.display = "block";
document.getElementById("name").value = "";
document.getElementById("descr").value = "";
clearLinks();
document.getElementById("pinid").value = received_msg;
alert(document.getElementById("pinid").value); // works
so.close();
}
}
Я попытался отредактировать код с помощью document.getElementById("nextform").submit();
проблема по-прежнему существует.
это мне? Это жук? Что я упускаю?
6 ответов
Я считаю, что это ошибка при установке значений формы пустым в IE.
Я бы предложил попробовать другой метод для сброса значений формы, я использовал этот метод в прошлом:
document.getElementById('name').parentNode.innerHTML = '';
может быть, не ваша проблема, но:
<input type="submit" name="submit" ... >
дав контроль форма имени отправить заменит форму отправить метод со ссылкой на элемент управления, поэтому вызов form.submit()
попытается "вызвать" вход.
привет может быть проблемой в вашем коде, который вы пропускаете, чтобы добавить id в форму, и вы пытаетесь получить доступ к форме по его id, который вы не определяете.
document.getElementById("nextform").submit();
требуется
<form name="nextform" id="nextform" action="anotherpage.php" method="post" enctype="multipart/form-data">
...
...
...
</form>
трассировка через то, что происходит в anotherpage.php страница, когда она получает обратную передачу, evt.данные могут быть закодированы не так, как вы ожидаете (это двоичный или текст, если текст, это utf-8).
Postback на другую страницу, где все, что он делает, это вывод разнесенных значений.
закрывает ли сокет исключение?
so.close();
мой исходный код имеет форму с более чем 5 полями. При отправке вызовов save()
. save()
функция также очищает поля с помощью JS.
в IE11 есть ошибка, которая приводит к сбою браузера, Если вы пытаетесь очистить более 5 полей, используя JS. См.здесь , есть обходной путь.
эта ошибка разбивает первую форму, затем nextform
форма, а также браузер. Я извиняюсь за то, что не отправил весь свой код, я не знал, что это связано с первым форма.
поскольку я думал, что один и тот же фрагмент кода имеет две разные проблемы , я опубликовал другой вопрос, очень похожий , здесь
в моем случае кнопка ввода имела тот же идентификатор и имя. Таким образом, вы можете проверить, являются ли они одинаковыми, и если действительно они одинаковы, используйте другое значение для одного из параметров.
надеюсь, это поможет.