我对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有效
您需要对每个参数进行独立编码,而不要对所有字符串进行编码,否则您将弄乱POST数据编码(=
和&
很重要,需要保持这样的状态:
let params = "tytul="+encodeURIComponent(tytul)+"&tresc="+encodeURIComponent(tresc)+"&zajawka="+encodeURIComponent(zajawka)+"&data="+encodeURIComponent(data)+"&autor="+encodeURIComponent(autor)+"&kategoria="+encodeURIComponent(kategoria);