我有一个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>
我知道这可能是一种错误的方式,我怎么能这样做或以类似的方式做到这一点?
谢谢!
答案 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似乎解释得很清楚。