将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']?

+2

因为'$ language;'没有在'setCookie.php'页面中定义的位置。尝试像这样并检查: - ' –

+0

这是我从$ test.php到setCookie.php的$ language。看起来像setCookie.php只能读取会话变量。不过谢谢! –

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 
?> 
+0

在test.php加载完成后,值'zzz'被分配给$ _SESSION ['xxx'],而不是按钮onclick。我要再看看这个 –

只是改变你的setCookie.php文件中像下面。

<?php 
session_start(); 
$_SESSION['xxx'] = $_POST['language']; 
?> 
+0

未定义的索引:第3行的C:\ xampp \ htdocs \ druhy \ setCookie.php中的语言 –

+0

但是谢谢! –

+0

试试这个** $ language = $ _POST ['language']; $ _SESSION ['xxx'] = $语言** –