$ _POST在获取formData后为空

时间:2019-05-11 07:20:09

标签: javascript php post fetch

当我尝试通过POST从JS到PHP获取formData时,尽管状态码为200 OK,但我还是获得了一个空的$ _POST array()。你能帮我吗?

function select_collection()
 {
  const tendina=document.querySelectorAll(".tendina");
   for(all of tendina)
        {
           all.addEventListener('change', aggiungi);
        }
    }
    function aggiungi(event){
        const tendina=event.target;
        const val=tendina.options[tendina.selectedIndex].value; 

        const row_box= tendina.parentNode.parentNode; 
        const child=row_box.childNodes;

            const url_image=child[0].childNodes[0].currentSrc;

            const id_google=child[1].childNodes[0].textContent.slice(11,);
            const titolo= child[1].childNodes[1].textContent.slice(8,);
            const autore= child[1].childNodes[2].textContent.slice(8,);
            const editore=child[1].childNodes[3].textContent.slice(9,);
            const pagine=child[1].childNodes[4].textContent.slice(8,);
            var formData = new FormData();
            formData.append('titolo_racc', val);
            formData.append('id_google', id_google);
            formData.append('titolo', titolo);
            formData.append('autore', autore);
            formData.append('editore', editore);
            formData.append('pagine', pagine);
            fetch('http://localhost/progetto/inserisci_contenuto.php',{
            method: "POST",
            body: formData
          }).then(onResponse).then(onText);

.tendina,它是下拉菜单的类别(选择,选项),标题,作者,出版者和页面,指的是图书的信息。 我想将此信息发送到PHP页面。

$conn=new mysqli($servername, $username, $password, $dbname);
if($conn->connect_error)
{
    die ("Connection failed " .$conn->connect_error);
}

if(isset($_POST["titolo_racc"]) && isset($_POST["id_google"] && isset($_POST["titolo"] && isset($_POST["autore"] && isset($_POST["editore"] && isset($_POST["pagine"]))
{
    print_r($_POST); // array ()
    print_r($_POST["titolo"]; //Undefined index:
}

2 个答案:

答案 0 :(得分:0)

摆脱:

    headers: new Headers({
        "Content-Type": "application/json;"}),

这是不正确的,因为您正在发送multipart/form-data格式。您需要允许fetch()自己提供此标头,因为它需要包含在内部随机生成的分隔符字符串。

答案 1 :(得分:0)

我发现问题出在用于识别user_id的session_start()中。实际上,如果我尝试使用$ _SESSION [“ user”],我不知道为什么,这是行不通的。

如果我不编写session_start(),那么所有的print_r和echo都可以很好地工作,并且也可以使用获取的值。

奇怪的是,我在网站的所有其他php页面中都使用了session方法。