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 форма, а также браузер. Я извиняюсь за то, что не отправил весь свой код, я не знал, что это связано с первым форма.

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


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

надеюсь, это поможет.