目的:
1、使用 session 保存前端 AJAX 请求发送的数据,login方法中保存数据;
2、从另一个控制器 ShopController 获取 1 中保存的 session 数据;
3、结果出现:打印输出的数据为空;
4、使用原生 PHP + AJAX 获取 session 数据完全没有问题;
5、我想,这极有可能又是 ThinkPHP 框架的 BUG。
IndexController.class.php 代码
`
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index($uid = 0)
{
$this->assign('title', 'DODU | 注册页面');
$this->display('index/register');
}
public function login()
{
//$http_params = I('');
session('12', 12);
//echo json_encode($http_params);
var_dump(session());
}
}
`
视图代码:
`
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username" value="" /></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="text" name="password" /></td>
</tr>
<tr>
<td>确认密码:</td>
<td><input type="text" name="repassword" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" id="user_reg" value="注册" />
</td>
</tr>
</table>
<script
src="https://code.jquery.com/jquery-1.12.4.js"
integrity="sha256-Qw82+bXyGq6MydymqBxNPYTaUXXq7c8v3CwiYwLLNXU="
crossorigin="anonymous"></script>
<script type="text/javascript">
$("#user_reg").click(function() {
var user_name = $([name="username"]).attr('value');
$.ajax({
// 不知道传输方式,默认是 get
//method: "post",
url: "{:U('login')}",
data: {pwd: 123},
xhrFields: {withCredentials: true},
crossDomain: true,
success: function(res) {
console.log(res);
}
});
/*
$.post( "ajax/test.html", function( data ) {
$( ".result" ).html( data );
});
$.get( "ajax/test.html", function( data ) {
$( ".result" ).html( data );
alert( "Load was performed." );
});
})
*/
});
</script>
`
ShopController.class.php 代码:
`
<?php
namespace Home\Controller;
use Think\Controller;
class ShopController extends Controller {
public function index() {
var_dump(session('12'));
}
}
`