繁体   English   中英

如何与php共享javascript var?

[英]How can I share javascript var with php?

我有一个php文件。 我单击,然后用onclick调用传递参数的javascript函数。 此参数是在像var这样的javascript函数上接收的,但我要将其添加到$ _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>

我知道这可能是错误的方式,我该怎么做或以类似方式进行呢?

谢谢!!

您只能在服务器上操作$_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'];

?>

当然,此代码需要进行更多的错误处理工作,但这是总的想法。

您将无法通过js设置php会话,但可以将cookie与javascript一起使用,如下所示:

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对其进行检查。

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

在标头下面创建了一个index.php文件名,它接收带有ajax的脚本,您将看到它正在将创建的变量发送到另一个文件名file.php,该文件名将被接收,以便您可以处理并返回索引。 php文件,因此您可以将其添加到html。

我将举一个例子,说明脚本可以作为for变量返回,可以按照您想要的方式进行处理。

如果您不知道很多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-> NetWork中),您可以检出发送回ajax php页面的所有内容。

如果您有任何问题,请通知我。

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

要执行您想要的操作,您将需要通过HTTP请求将Javascript变量传递给服务器端的PHP。 例如,可以是:

  • 单击<a href="myscript.php?myVar=something">Click</a>类的链接,这将重新加载页面(在那里,您将可以执行$_SESSION['b'] = $_GET['myVar'] ),
  • 就像上面的链接一样,进行<form>提交,
  • 或无需使用AJAX重新加载页面,这意味着从Java语言到其他页面的“后台”调用不会离开您的页面。 您可以通过多种方式进行AJAX调用,其他一些答案则提到了jQuery ,这是一个Javascript库,可轻松执行此类操作。 这篇文章似乎解释得很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM