2017-06-15 69 views
0

如何使用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'頁面中定義的位置。嘗試像這樣並檢查: - <?php error_reporting(E_ALL); ini_set('display_errors',1); session_start(); $ language =「eng」; $ _SESSION ['xxx'] = $ language; ?>' –

+0

這是我從$ test.php到setCookie.php的$ language。看起來像setCookie.php只能讀取會話變量。不過謝謝! –

回答

0

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。我要再看看這個 –

0

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

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

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

+0

但是謝謝! –

+0

試試這個** $ language = $ _POST ['language']; $ _SESSION ['xxx'] = $語言** –