Javascript 为什么不使用AJAX将变量传递给PHP?
我是AJAX和PHP的初学者。我试图做的是,当用户单击下面回声中的锚定标记时,立即向JavaScript函数发送一个ID。我试图从chargers-cables.php获取一个变量,并在selected-product.php中使用它,但当它到达那里时,该变量似乎是空的 chargers-cables.phpJavascript 为什么不使用AJAX将变量传递给PHP?,javascript,php,html,ajax,Javascript,Php,Html,Ajax,我是AJAX和PHP的初学者。我试图做的是,当用户单击下面回声中的锚定标记时,立即向JavaScript函数发送一个ID。我试图从chargers-cables.php获取一个变量,并在selected-product.php中使用它,但当它到达那里时,该变量似乎是空的 chargers-cables.php <script> function saveSession(ccID) { $.ajax({ type: "POST&
<script>
function saveSession(ccID) {
$.ajax({
type: "POST",
url: "/selected-product.php",
data: {ID: ccID },
success: alert("SUCCESS !")
});
console.log("ID = " + ccID);
window.location.href = "selected-product.php";
}
</script>
echo " <div> <a onclick= \"saveSession($ccID)\" > <img src= " . $imageURL . "> </a> <a class=\"product\" href=\"selected-product.php\"> " . $productName . "</a> </div> ";
函数saveSession(ccID){
$.ajax({
类型:“POST”,
url:“/selected product.php”,
数据:{ID:ccID},
成功:警报(“成功!”)
});
console.log(“ID=”+ccID);
window.location.href=“selected product.php”;
}
回声“;
selected-product.php
if(empty($_POST["ID"])){
echo "Error";
}else{
$cc_ID = $_POST["ID"];
}
echo("<script>console.log('PHP: " . $cc_ID . "');</script>");
// $cc_ID is empty !
if(空($\u POST[“ID”])){
回声“错误”;
}否则{
$cc_ID=$_POST[“ID”];
}
echo(“console.log('PHP:.$cc_ID.');”;
//$cc_ID为空!
您正在将值发送到PHP页面。服务器根据脚本创建一个页面并将其发送到客户端。然后,您正在重定向。这将在服务器上创建一个新请求,该请求生成一个包含新变量的全新页面,并将其发送到客户端。除非将变量保存在会话变量中,否则该变量将丢失。即使您这样做了,AJAX的异步特性也可能使其不可靠
如果要以这种方式传递变量,只需将其添加到URL:
<script>
function saveSession(ccID) {
console.log("ID = " + ccID);
window.location.href = "selected-product.php?ID="+ccID;
}
</script>
echo " <div> <a onclick= \"saveSession($ccID)\" > <img src= " . $imageURL . "> </a> <a class=\"product\" href=\"selected-product.php\"> " . $productName . "</a> </div> ";
函数saveSession(ccID){
console.log(“ID=”+ccID);
window.location.href=“selected product.php?ID=“+ccID;
}
回声“;
然后:
if(空($\u GET[“ID”])//到这里而不是发布
{
回声“错误”;
}
否则{
$cc_ID=$_GET[“ID”];
}
echo(“console.log('PHP:.$cc_ID.');”;
//$cc_ID为空!
如果您试图使用AJAX来避免页面重新加载,那么您的JavaScript需要处理来自服务器的响应,并用它发送的数据绘制一个新页面。这是另一个问题。
window.location.href
不是GET方法POST@AntonyJack这是正确的。您正在重定向页面。尝试使用e.preventdeaut()。另外,示例中未定义$ccID。请仅在请求finnish$.ajax({method:“POST”,url:/selected product.php,data:{ID:ccID},})后尝试更改位置。完成(函数(msg){alert(“数据保存:”+msg);window.location.href=“selected product.php”});
if(empty($_GET["ID"])) // GET here instead of POST
{
echo "Error";
}
else{
$cc_ID = $_GET["ID"];
}
echo("<script>console.log('PHP: " . $cc_ID . "');</script>");
// $cc_ID is empty !