我的$ .ajax请求在iOS 11.3上停止正常工作

Gor*_*per 11 ajax ios

这段代码过去常常工作得很好.

鉴于$ .ajax没有收到任何文件数据,从更新到iOS 11.3开始,这个$ .ajax在iOS浏览器上测试时,提交一个简单的纯文本表格似乎非常缓慢地工作20秒.

但是如果文件元素传递文件数据,$ .ajax在两种情况下都能正常工作,并且和预期的一样快.

HTML ---
<form enctype="multipart/form-data" id="chatform" method="post">
    <input type="file" name="pic" id="pic" class="hidden" />
    <textarea name="chattextarea" id="chattextarea" rows="3" cols="10"></textarea>
    <input type="button" value="Send" onclick="sendMessage();" />
</form>

JavaScript ---
function sendMessage() {
    var formData = new FormData($("#chatform")[0]);
    $.ajax({
        url: 'send.php',
        type: 'POST',
        data: formData,
        async: true,
        cache: false,
        contentType: false,
        processData: false,
        success: function (returndata) {
            /* some success message */
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

这是iOS 11.3的错误吗?

-----编辑-----

确实,这不仅是iOS 11.3的bug,也是Safari 11.1的bug.到目前为止,我测试了这些环境并复制了这个bug:

  1. Mac OS,Safari
  2. iOS,Safari
  3. iOS,Chrome
  4. iOS,WKWebView(混合应用)

我写了一个简单的解决方法,请检查我的答案,如果你有一个更清洁的解决方案让我知道.

Ben*_*eck 0

我有完全一样的问题!我有一个带有多个表单的网络应用程序,如果用户不选择包含文件,这些表单将不再工作。自 beta 1 以来一直运行 iOS 11.3 beta,并希望每个新的 beta 版本都能解决此问题。令人恼火的是,该问题在公开发行版中仍然存在。希望当这个 \xe2\x80\x9dbug\xe2\x80\x9d 影响更多的人时,现在会有更多关于如何解决这个问题的信息。

\n