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

ускаю веб-приложение на основе Symfony 2.8, которое отправляет некоторые данные формы обратно в контроллер с помощью Ajax.

Пока все работало нормально, но с момента последнего обновления macOS до версии 10.13.4 пользователи начинают сообщать, что отправка формы больше не работает в Safari. Другие версии MacOS и другие браузеры на 10.13.4 по-прежнему работают нормально, поэтому в Safari это кажется проблемой. Конечно, я подал отчет об ошибке в Apple, но я не думаю, что когда-нибудь получу обратную связь оттуда ...

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

// safri_bug.html
<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    </head>
<body>
    <form name="app_booking" method="post" action="/test/submit.php">
        <div><input type="text" id="someValue" name="value"></div>
        <div><input id="thefile" type="file" name="file"></div>
    </form>

    <button id="bSubmit" type="button">Submit</button>

    <script>    
        $(document).ready(function() {              
            $('#bSubmit').click(function() {
                var form = $('form');
                var data = new FormData(form[0]);

                $.ajax({
                    url : '/submit.php',
                    type : 'POST',
                    data : data,
                    contentType: false,
                    processData: false,
                    context : this,
                    success : function(response) {
                            alert('success: ' + response);
                    },
                    error: function (xhr, ajaxOptions, thrownError) {
                            alert('error: ' + xhr.responseText + ' - ' + thrownError);
                    }
                });
            });
        });
    </script>
</body>
</html>


// submit.php
<?php 
    echo "OK";

Результат

Отправка формы отлично работает на всех протестированных браузерах и платформах, но в Safari в macOS 10.13.4В Safari на macOS 10.13.4:Если не выбран файл: Ajax-запрос выполняется в течение примерно 20 секунд (время ожидания?) И затем возвращается с пустым ответом об успешном завершении.submit.php делаетНЕ позвонить.Если файл был выбран: все работает нормально ...

Итак, это, кажется, ошибка в последнем обновлении Safari? Или что-то не так с моим кодом?

Есть идеи, как предотвратить эту ошибку?

Ответы на вопрос(5)

Ваш ответ на вопрос