当我尝试通过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:
}
答案 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方法。