Невозможно отправить форму на PHP скрипт - PullRequest
0 голосов
/ 07 мая 2020

Я использовал старый добрый ajax для функции отправки формы, которую я сделал. Я сделал небольшой пример с тем же javascript, что и использовал. Если форма была отправлена ​​правильно, то пользователь ни о чем не будет предупрежден. Если форма не была отправлена, пользователь получит предупреждение с помощью «reee». В моем случае пользователь получает предупреждение с помощью «reeeeee», так как форма, похоже, не отправляется в сценарий php, и я не знаю почему.

Это немного похоже на это:

html

<form id = "theform" >
    <input name = "noodz" required>
</form>
js

const form = document.getElementById("theform");
form.addEventListener("submit", submitfunc);

function submitfunc(e) {

    e.preventDefault();
    const thing = new XMLHttpRequest();
    thing.open("POST", "upload.inc.php");

    thing.upload.addEventListener("progress", e => {
        console.log(e);

    });

    thing.onreadystatechange = function() {
        if (thing.readyState == 4 && thing.status == 200) {
            var message = thing.responseText;
            alert(message);
        }
    }

    thing.setRequestHeader("Content-Type", "multipart/form-data");
    thing.send(new FormData(form)); // <- where form is sent
}
php

<?php 
    if (isset($_POST['noodz'])){
        //form was sent

    } else {
        //form wasn't sent
        echo "reeeeeeeeeeeee"
    }
?>

1 Ответ

1 голос
/ 07 мая 2020

Вам нужно удалить строку

thing.setRequestHeader("Content-Type", "multipart/form-data")

и позволить XHR правильно установить значение типа содержимого и сгенерировать правильную границу MIME (при необходимости - а это не так, для вашей простой формы) .

Вот демонстрация https://jsfiddle.net/oxaqfbcd/ - если вы посмотрите в браузере Network tool, вы увидите, что запрос правильно сформирован с обнаруженными данными формы.

Если вы добавьте эту строку кода обратно и запустите ее снова, вы можете сравнить внешний вид раздела тела запроса с тем, когда строки нет, чтобы увидеть, какой эффект это имеет.

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