php - ajax 不再适用于 iPhone

标签 php iphone ajax

我使用 php 和 ajax 使用表单将数据插入到 mysql 数据库中。 它始终适用于桌面和移动设备。

现在,在插入数据时,仅从 IPHONE(在 iphone 6s 和 iphone x 上测试,无论是从 Safari 还是从 Chrome)该过程都不起作用,并报告 400 或 0 错误。

从台式机和设备苹果并不是万能的。

这是代码:

<script  type="text/javascript">
$.ajaxSetup({
            beforeSend: function(xhr) {
                xhr.setRequestHeader('HTTP_X_REQUESTED_WITH_AJAX', 'true');
            }
        });
</script>       
<script type="text/javascript">
    $(document).on("submit", "form", function(event){

        event.preventDefault();
        $('#ShowData').html('<img src="img/loader.gif" height="16" width="16"/>');

        $.ajax({
            url: 'ins_ok.php',
            type: 'POST',
            data: new FormData(this),
            processData: false,
            contentType: false,
            success: function (data, status)
            { 
                $('#ShowData').html(data);
                $('#Ins')[0].reset();
                $('#Data').datepicker('update', '');

            },
            error: function (xhr, desc, err)
            {
                alert('Dati al momento non disponibili. Riprovare più tardi.'); 
                console.warn(xhr.responseText);
                alert(xhr.status);
                alert(err);
            }
        });        
    });
</script>

最佳答案

在新的 iOS 11 更新中,formData() 对象存在问题。当我尝试提交带有图像选项的表单时,我遇到了同样的问题,如果用户不包含图像,则会失败。

现在,我猜想,当 iOS 使用 formData() 对象时,如果图像输入值为空,它只会尝试发送一个空对象,这对于 JSON 来说是非法的。我最终创建了一个令人讨厌的函数:

if (image input is null) {
    disable the image input;
}

然后在回调完成后,我必须再次“重新启用”图像输入功能。我花了几个小时寻找解决方案,但它确实很新,因为 iOS 11 太新了。

这是对这个问题的引用,帮助我解决了这个问题: My $.ajax request stopped working properly on iOS 11.3

关于php - ajax 不再适用于 iPhone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50951523/

相关文章:

php - dailymotion API PHP 问题

php - 保护表单免受可编写脚本的垃圾邮件攻击

iphone - MFmailcomposer 有时会出错?

javascript - 我如何使用他们的 API 在我的网页上显示来自 Tumblr 博客的所有图像?

ajax - 如何在 Yii 中调用另一个 Action 中的 Action ?

php - MySQL连接3个表

php - 扩展表达语言

iphone - 处理ios中的webview响应

ios - 为什么调用 MFMailComposeViewController 会释放调用它的 View ?

javascript - 将 JSON 存储在 HTMl 中