[英]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.