我如何与PHP共享javascript var?

时间:2015-08-25 19:41:57

标签: javascript php jquery

我有一个php文件。我点击并使用onclick我调用了传递参数的javascript函数。这个参数在javascript函数上像var一样被接收,但是在这个函数中我想把它添加到$ _SESSION php var。

 script language="javascript">
 <?php
 session_start();
 ?>
function recargar(myVar){   
   var variable_post="Mi texto recargado";
   <?php
      $_SESSION['b'] = variable_post;  //Here I want add myVar
   ?>
   });          
 }
  </script>

 </head>
 <body>
 <div id="recargado">My text</div>
 <p align="center">
     <a href="miscript.php" onclick="javascript:recargar(myVar);">recargar</a>

 </p>    
 </body>
 </html>

我知道这可能是一种错误的方式,我怎么能这样做或以类似的方式做到这一点?

谢谢!

4 个答案:

答案 0 :(得分:1)

您只能在服务器上操作$_SESSION,但JS代码仅在客户端上运行。最简单的方法是使用ajax调用,看起来像这样,假设你正在使用jQuery:

function recargar(myVar){   
   var variable_post="Mi texto recargado";
   $.get("setsession.php?var="+variable_post);
   });          
 }

这将在服务器上运行setsession.php脚本,而无需重新加载页面。 setsession.php脚本如下所示:

<?php

  $_SESSION['b'] = $_GET['var'];

?>

当然,这段代码需要更多关于错误处理的工作,但这是一般的想法。

答案 1 :(得分:0)

您无法通过js设置php会话,但您可以使用以下javascript的Cookie:

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires;
}

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) == 0) return c.substring(name.length, c.length);
    }
    return "";
}

function checkCookie() {
    var user = getCookie("username");
    if (user != "") {
        alert("Welcome again " + user);
    } else {
        user = prompt("Please enter your name:", "");
        if (user != "" && user != null) {
            setCookie("username", user, 365);
        }
    }
}

只需调用setCookie设置cookie,getCookie即可获取它并checkCookie进行检查。

答案 2 :(得分:0)

使用ajax,将变量传递给php文件。

在下面创建的头文件中的index.php文件名接收带有ajax的脚本,您将看到它将您创建的变量发送到另一个接收的文件名file.php,以便您可以处理并返回index.php文件,以便您可以附加到您的HTML。

我将举例说明脚本的返回变量可以按照你想要的方式处理。

如果你不知道很多ajax跟随链接通过ajax jquery文档。 http://api.jquery.com/jquery.ajax/

// --------------------------------------------- ------------------------------

index.php
<!DOCTYPE html>
    <html>
        <head>
            <script type="text/javascript" src="js/jquery.js"></script>
            <script type="text/javascript">
                $(document).ready(
                    function(){
                        var variable_post="Mi texto recargado";
                        $.ajax({
                            url:'file.php',
                            type:'post',
                            data:{variable_post:variable_post},
                            success:function(data){
                                $('h1').html(data);
                            }
                        });
                    }               
                );
            </script>
        </head>

        <body>
            <h1>Text Here</h1>
        </body>
    </html>

// --------------------------------------------- ------------------------------

file.php

<?php
    $_SESSION['b'] = $_POST['variable_post'];

    echo $_SESSION['b'];
?>

// --------------------------------------------- ------------------------------

记住使用浏览器功能,例如在Chrome Inspect Element中 - &gt; NetWork,你可以查看发送回ajax的所有内容。

如果您有任何问题,请告诉我。

答案 3 :(得分:0)

像这样在客户端加载的Javascript无法直接写入PHP变量,因为PHP驻留在服务器端。

要做你想做的事,你需要通过HTTP请求将你的Javascript变量传递给服务器端的PHP。它可以是,例如:

  • 点击<a href="myscript.php?myVar=something">Click</a>之类的链接,这将重新加载页面(并且您将可以$_SESSION['b'] = $_GET['myVar']执行此操作),
  • 提交<form>,就像上面的链接一样,
  • 或者不使用AJAX重新加载页面,这意味着&#34;背景&#34;从Javascript调用到其他页面而不离开您的页面。您可以通过多种方式进行AJAX次呼叫,其他一些答案提及jQuery,这是一个可以轻松完成此类操作的Javascript库。 This post似乎解释得很清楚。