将php变量添加到ajax中
如何使用php变量而不使用jQuery? 我的test.php文件:将php变量添加到ajax中
<?php
session_start();
$language = 'zzz';
?>
<!DOCTYPE html>
<html lang="en">
<body>
<button onclick = "setCookie()">test</button>
<p id="demo"></p>
<script>
function setCookie() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML = this.responseText;
}
};
xhttp.open("POST", "setCookie.php", true);
xhttp.send();
}
</script>
<?php
echo 'session: ' . $_SESSION['xxx'];
?>
</body>
</html>
和我setCookie.php文件是:
<?php
session_start();
$_SESSION['xxx'] = $language;
?>
如果我把一些简单的回声声明setCookie.php,它的工作原理,并在我的网站出现。但为什么它不能将$ language值赋给session ['xxx']?
Beacuse ajax在调用时会发出新的请求,因此您必须传递值。 试试这个:
test.php的
<?php
session_start();
$language = 'zzz';
?>
<!DOCTYPE html>
<html lang="en">
<body>
<button onclick = "setCookie()">test</button>
<p id="demo"></p>
<script>
function setCookie() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML = this.responseText;
}
};
language = '<?=$language?>'; //get value
xhttp.open("POST", "setCookie.php", true);
xhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhttp.send("language=" + language); //send as post params
xhttp.send();
}
</script>
<?php
echo 'session: ' . $_SESSION['xxx'];
?>
</body>
</html>
setCookie.php
<?php
session_start();
$language = $_POST['language']; //retrive value
$_SESSION['xxx'] = $language; //assign to session
?>
在test.php加载完成后,值'zzz'被分配给$ _SESSION ['xxx'],而不是按钮onclick。我要再看看这个 –
只是改变你的setCookie.php
文件中像下面。
<?php
session_start();
$_SESSION['xxx'] = $_POST['language'];
?>
未定义的索引:第3行的C:\ xampp \ htdocs \ druhy \ setCookie.php中的语言 –
但是谢谢! –
试试这个** $ language = $ _POST ['language']; $ _SESSION ['xxx'] = $语言** –
因为'$ language;'没有在'setCookie.php'页面中定义的位置。尝试像这样并检查: - ' –
这是我从$ test.php到setCookie.php的$ language。看起来像setCookie.php只能读取会话变量。不过谢谢! –