我有这个网站,我可以作为记录或匿名用户与网络进行交互。当我点击一个链接时,我称之为ajax函数:
你点击这里:<a id="alcrearuta" class="'.$row->urlamigable.'" href="#">añadir a ruta</a>
这是我的ajax功能:
var valor=$("#alcrearuta").attr('class');
$("#alcrearuta").click(function(){
$.ajax({
type: "GET",
url: "../ajax/ruta.php",
data: "urlamigable=" + valor,
dataType: 'html',
success: function(data) {
$("#listaruta").html(data);
}
});
});
问题是我有两种可能性:记录的用户点击链接并且ruta.php考虑在会话中设置的用户ID或者我有一个想要做类似事情的匿名用户在数据库上做它的东西。
在我的ruta.php中,我有:
if(!empty($_SESSION['Username'])){
//Insert stuff on DB
}else{
//I wish I could create the session here but I can't since it's an ajax call
}
我需要的是在链接中的点击和ajax函数结束之间的某个时刻我可以设置我的$ SESSION ['Username']变量以获得一个新值(因为用户没有登录,它是当前为空,因此我在数据库上的插入不起作用)
答案 0 :(得分:3)
如果你想在php中使用会话,你的php脚本(ruta.php)应该从
开始session_start();
从那时起,您可以将任何变量分配给$ _SESSION ['Username']
$_SESSION['Username'] = something_to_generate_a_Username;
就像任何其他服务器请求一样。
答案 1 :(得分:1)
您可以使用jquery cookie库来创建会话cookie。
$.cookie("Username", "NOTLOGGEDINUSER");
https://github.com/carhartl/jquery-cookie
http://www.electrictoolbox.com/jquery-cookies/
and in beforeSend for Ajax, you can check if username cookie exists, other wise, create the cookie with "NOTLOGGEDINUSER"
答案 2 :(得分:0)
也许在点击时只做另一个AJAX调用来设置SESSION?