Safari не отправляет данные формы AJAX - PullRequest
0 голосов
/ 08 июня 2018

Странная проблема началась на странице, где код не был изменен.Я удалил вещи назад и теперь выделил проблему, но не могу понять ее.

В этой форме, если я только вводю текстовое поле, 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 (), и произошло то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...