ajax不再可在iphone上使用

时间:2018-06-20 15:10:02

标签: php iphone ajax

我使用一种形式,使用php和ajax将数据插入mysql数据库。 它一直在台式机和移动设备上均可工作。

现在,当插入数据时,仅来自IPHONE (在Safari和Chrome上均在iphone 6s和iphone x上进行了测试),该步骤无效,并报告400或0错误。

从台式机和设备上运行不是Apple可以完成所有工作。

这是代码:

<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>

1 个答案:

答案 0 :(得分:2)

在新的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