我使用一种形式,使用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>
答案 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