有一個奇怪的問題,當從js(localhost)做ajax請求時會話沒有被存儲。Ajax和PHP會話問題,簡單的測試不會工作
我創建了一個簡單的演示程序,我期望能夠工作,但會話永遠不會被存儲。但是,如果我直接從我的瀏覽器訪問php腳本,它按預期工作並存儲會話。
HTML:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script src="js/jquery-1.8.0.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(function(){
$.ajax({
dataType: 'json',
url: 'http://example.com/test.php',
method: 'GET',
success: function(response) {
console.log(response);
},
error: function(error) {
console.log(error);
}
});
});
</script>
</body>
</html>
PHP:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
/* Session start */
session_start();
/* Set headers */
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
if (!isset($_SESSION['test'])) {
$_SESSION['test'] = 'abc';
$result = 'session_set';
} else {
$result = $_SESSION['test'];
}
echo json_encode(array('result' => $result));
?>
檢查控制檯和你的PHP腳本中的錯誤。 – Jer
沒有PHP錯誤,沒有JS控制檯錯誤。檢查php日誌文件並嘗試添加'ini_set('display_errors',1); ini_set('display_startup_errors',1); error_reporting(E_ALL);'到php腳本的頂部。 Allways返回「session_set」。 –
您正試圖在頁面加載時調用'ajax'。所以使用'$(function(){... //你的ajax方法.... //})' –