gpt4 book ai didi

php - $_POST 为空,使用 Ajax 发送表单值

转载 作者:行者123 更新时间:2023-11-29 04:56:02 25 4
gpt4 key购买 nike

HTML

<form action='insert.php' method='POST'>
<p><b>Client:</b><input type='text' name='idclient'/>
<p><b>Total:</b><br /><input type='text' name='total'/>

<p><input type='submit' value='Save' id="btnSave"/>
<input type='hidden' value='1' name='submitted' />
</form>

PHP (插入.php)

<?php
echo file_get_contents('php://input');
include_once "connect.php";

if ($db_found){
if (isset($_POST['submitted'])) {
foreach($_POST AS $key => $value) {
$_POST[$key] = mysql_real_escape_string($value);
}

$sql = "INSERT INTO `mytable` ( `idclient` , `total` , ) " .
"VALUES( {$_POST['idclient']} , {$_POST['total']} ) ";
mysql_query($sql) or die(mysql_error());
}
}
mysql_close($db_handle);
?>

这工作正常,但是当我尝试使用 Ajax 调用插入时,$_POST 函数为空,我无法访问表单中的值。

这是 ajax 代码和函数调用:

<form action="javascript:Save()" method='POST'>

Ajax

function Save()
{
xmlHttp = getXMLHttp(); // returns a new XMLHttpRequest or ActiveXObject
xmlHttp.onreadystatechange = function(){

if(xmlHttp.readyState == 4) {
document.getElementById("btnSave").value = "Saved";
document.getElementById("result").innerHTML = xmlHttp.responseText;
}
else{
document.getElementById("btnSave").value = "Saving...";
}
}

xmlHttp.open("POST", "insert.php", true);
xmlHttp.send(null); // Do I need to create and pass a parameter string here?
}

执行 echo file_get_contents('php://input'); 实际上 $_POST 是空的,参数值没有传递。

我可以像这样连接 URL 中的参数值

xmlHttp.open("POST", "insert.php?idclient=123&total=43", true);   

但是,有没有办法使用 $_POST 并加以利用呢?

最佳答案

您需要将内容类型设置为 application/x-www-form-urlencoded,以便值显示在 $_POST 中。

例如 xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");(如果使用 XMLHttpRequest 对象)。

关于php - $_POST 为空,使用 Ajax 发送表单值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6551409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com