我正在尝试使用Laravel5和Memcached将一些数据写入会话。没有ajax,它可以正常工作,但我需要异步存储多个值。
下面是我的示例javascript代码:
var i = 1;
for (i; i < 11; i++) {
var data = {
id: i,
data: 'data-' + i
}
$.ajax({
url: 'api/data',
method: 'POST',
data: data
});
}下面是我的示例php代码:
post('/api/data', function() {
$request = \Request::all();
\Session::put('key-'.$request['id'], $request['data']);
});当我启动这段js代码一次时,我并没有将所有10个值都写到session中。
下面是js代码完成后的dd(\Session::all())输出:
array:8 [▼
"_token" => "WUv8naiJT9PEHpG4b4moZyUcTfxy4YHhdBiluB7R"
"_previous" => array:1 [▶]
"flash" => array:2 [▶]
"key-2" => "data-2"
"key-5" => "data-5"
"key-6" => "data-6"
"key-7" => "data-7"
"key-9" => "data-9"
]如果我多次触发js代码,我会得到存储的所有10个值。
发布于 2015-04-06 03:20:08
$.ajax调用是异步的。
所以有些请求几乎是同时完成的。这就是为什么在会话中有随机更新数据的原因
取决于哪个请求让session_write最后一次读取...
这是一个只有2个请求的时间表:
请求1读取会话请求2读取会话请求1写入会话请求2写入会话
在会话数据中只有: key-2 \f25 => -2\f6数据
https://stackoverflow.com/questions/29416291
复制相似问题