PHP不会读取AJAX发送的数据[重复]

问题描述 投票:-1回答:1

我对AJAX有问题,php无法读取ajax发送的数据。可能出了什么问题:

window.onload = () => {
const send = document.getElementById("send");
send.addEventListener("click", (event) => {
    event.preventDefault();
    let tytul = document.getElementById("tytul").value;
    let tresc = document.getElementById("tresc").value;
    let zajawka = tresc.split(".")[0];
    let data = new Date().getFullYear() + "-" + new Date().getMonth() + "-" + new Date().getDate();
    let autor = "autor" // Nazwa autora powinna odpowiadać loginowi zalogowego użytkownika.
    let kategoria = document.getElementById("kategoria").value;
    let params = encodeURIComponent("tytul="+tytul+"&tresc="+tresc+"&zajawka="+zajawka+"&data="+data+"&autor="+autor+"&kategoria="+kategoria);
    console.log(params);
    post(params);});}

const post = (params) => {
let httpc = new XMLHttpRequest();
let url = "artykul.php";
httpc.open("POST", url, true);
httpc.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
httpc.onreadystatechange = function() {
    if(httpc.readyState == 4 && httpc.status == 200) {
        console.log("sukces");
    }
};
httpc.send(params);}

我读过某个地方,我必须用PHP解码此数据,但我不知道该怎么做。

PHP:

<?php
$tytul = $_POST["tytul"];
$zajawka = $_POST["zajawka"];
$tresc = $_POST["tresc"];
$autor = $_POST["autor"];
$data = $_POST["data"];
$kategoria = $_POST["kategoria"];

$connection = mysqli_connect("localhost", "root", "", "news")
    or die(mysqli_error($connection));

$query = mysqli_query($connection, "INSERT INTO `news` (`TYTUL`, `ZAJAWKA`, `TRESC`, `AUTOR`, `DATA`, `KATEGORIA`) VALUES ($tytul, $zajawka, $tresc, $autor, $data, $kategoria)")
    or die(mysqli_error($connection));
mysqli_close($connection);?>

[如果我插入'tytul','zajawka','tresc','autor','2020-03-24','kategoria'代替$ tytul,$ zajawka,$ tresc,$ autor,$ data,$ kategoria有效

php mysql ajax post send
1个回答
0
投票

您需要对每个参数进行独立编码,而不要对所有字符串进行编码,否则您将弄乱POST数据编码(=&很重要,需要保持这样的状态:

]
let params = "tytul="+encodeURIComponent(tytul)+"&tresc="+encodeURIComponent(tresc)+"&zajawka="+encodeURIComponent(zajawka)+"&data="+encodeURIComponent(data)+"&autor="+encodeURIComponent(autor)+"&kategoria="+encodeURIComponent(kategoria);
© www.soinside.com 2019 - 2024. All rights reserved.