Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么不使用AJAX将变量传递给PHP?_Javascript_Php_Html_Ajax - Fatal编程技术网

Javascript 为什么不使用AJAX将变量传递给PHP?

Javascript 为什么不使用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&

我是AJAX和PHP的初学者。我试图做的是,当用户单击下面回声中的锚定标记时,立即向JavaScript函数发送一个ID。我试图从chargers-cables.php获取一个变量,并在selected-product.php中使用它,但当它到达那里时,该变量似乎是空的

chargers-cables.php

<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 !