我有一个像这样的javascript代码:
<script type="text/javascript">
$('#editRole').on('show.bs.modal', function (e) {
$roleID = $(e.relatedTarget).attr('data-id');
// Here I want to set this $roleID in session may be like this :
Session['roleID'] = $roleID;
});
</script>
然后我想在其他地方使用php代码获取$ roleID,可能是这样的:
<?php $roleID = Session::get('roleID'); //do something .... ?>
由于
答案 0 :(得分:10)
您无法直接从JS设置服务器会话变量。
为此,您可以对PHP脚本进行AJAX调用,传递您要设置的值,并将其设置为服务器端:
$('#editRole').on('show.bs.modal', function (e) {
$roleID = $(e.relatedTarget).attr('data-id');
//ajax call
$.ajax({
url: "set_session.php",
data: { role: $roleID }
});
});
<强> set_session.php 强>
//preliminary code
Session::put('roleID', $request->input('role') );
答案 1 :(得分:1)
以上答案和其他资源一起帮助我制作了类似'在laravel 中使用AJAX设置会话'的情况。
我发布了一个简单的示例,其他用户可能会发现这有用。
查看 - ajax_session.blade.php
TreeMap
<强> routes.php文件强>
log n
控制器 - sessionController.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#submit').on('click',function(){
// show that something is loading
$('#response').html("<b>Loading response...</b>");
$.ajax({
type: 'POST',
url: '/set_session',
data: $("#userform").serialize()
})
.done(function(data){
// show the response
$('#response').html(data);
})
.fail(function() {
// just in case posting your form failed
alert( "Posting failed." );
});
// to prevent refreshing the whole page page
return false;
});
});
</script>
</head>
<body>
<form id="userform">
{{ csrf_field() }} <!--required - otherwise post will fail-->
<input type="text" id="uname" name="uname" required/>
<button type='submit' id="submit">Submit</button>
<div id='response'></div>
</form>
</body>
</html>
您可以通过运行Route::get('session_form', function () {
return view('ajax_session');
});
Route::post('set_session', 'SessionController@createsession');
Route::get('allsession', 'SessionController@getsession');
来检查此问题。您还可以public function createsession(Request $request)
{
\Session::put('uname', $request->uname);
echo "session created";
}
public function getsession()
{
dd(\Session::get('uname'));
}
单独检查会话。
希望这有帮助!!!