Странная проблема началась на странице, где код не был изменен.Я удалил вещи назад и теперь выделил проблему, но не могу понять ее.
В этой форме, если я только вводю текстовое поле, Safari не будет отправлять форму (хотя ошибок не возникает),Он отправляет в Firefox, когда вводится только текстовое поле.
Safari отправит форму, если в поле изображения есть файл или я удалю изображение, поданное в целом.Поэтому по какой-то причине отсутствие данных в поле изображения приводит к тому, что форма не отправляется в Safari.
Кажется, имеет значение, что текстовое поле создается Javascript, если я просто делаю страницу с обычнымввода текста для начала проблемы не происходит.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript" language="javascript">
function sendForm(){
var formElement = document.querySelector("#upload");
var formData = new FormData(formElement);
var request = new XMLHttpRequest();
request.open("POST", "test.php");
request.send(formData);
}
</script>
</head>
<body>
<form name="upload" id="upload" >
<h2>Image</h2>
<input name="image" type="file" />
<p onclick="sendForm()" />SEND</p>
</form>
<script>
for (var f = 0; f < document.forms.length; f++) {
new_input = document.createElement('input');
new_input.type = 'hidden';
new_input.name = 'title';
new_input.value = 'test';
document.forms[f].appendChild(new_input);
}
</script>
</body>
</html>
Я отслеживаю отправленные данные с помощью:
<?php
$title = $_REQUEST['title'];
$file = 'output.txt';
$current = file_get_contents($file);
file_put_contents($file, $title."\n");
?>
Кроме того, если request.send(formData);
изменено на request.send("test");
, то«test» будет отправлено во всех случаях, поэтому кажется, что Safari имеет проблему с объектом FormData.
Я также проверил это с помощью API fetch (), и произошло то же самое.