Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sinatra无法识别会话的javascript_Javascript_Jquery_Ruby_Ajax_Sinatra - Fatal编程技术网

Sinatra无法识别会话的javascript

Sinatra无法识别会话的javascript,javascript,jquery,ruby,ajax,sinatra,Javascript,Jquery,Ruby,Ajax,Sinatra,我正在尝试使用jQuery登录Sinatra应用程序,但Sinatra似乎根本无法识别它,因为某些原因,下面是我的代码,以查看用户是否登录: Sinatra应用程序: get '/logged_in' do if session[:logged_in] == true status 200 "OK" else status 200 "False" end end 当我在浏览器中浏览到/logged_in

我正在尝试使用jQuery登录Sinatra应用程序,但Sinatra似乎根本无法识别它,因为某些原因,下面是我的代码,以查看用户是否登录:

Sinatra应用程序:

get '/logged_in' do
    if session[:logged_in] == true
         status 200
         "OK"
    else
        status 200
        "False"
    end
end
当我在浏览器中浏览到
/logged_in
时,我会看到
OK
,但当我执行以下Javascript时,控制台会打印出
False
,这对我来说似乎很奇怪

var r = $.ajax({
  type: "GET",
  url: "http://xxx-xxx.com/logged_in"
});
r.success(function(msg) {
    console.log(msg);
});

任何洞察都将被告知

我打赌这是jQuery问题,而不是Sinatra问题。检查是否正在为ajax请求发送cookie。无法发送cookie的原因有很多。

如果您能提供更多详细信息,那就更好了。(浏览器、按时间顺序排列的请求日志,包括HTTP状态代码,甚至是wireshark的转储文件。)但我猜:

var r = $.ajax({
  cache: false,
  type: "GET",
  url: "/logged_in",
  success: function(msg) {
    console.log(msg);
  }
});
一些浏览器积极缓存AJAX请求,特别是GET请求。因此,您可能需要尝试
缓存:false
。后来添加success函数对我来说也很奇怪,我从未在任何代码中看到过


编辑:服务器是否在同一个域上响应AJAX请求?(域必须与浏览器测试中的域相同。)通常不需要在URL中指定域,因此我在这里的代码中删除了它。因此,毕竟这可能是一个问题,因为。

您是否尝试过将success函数作为
ajax
函数设置的一部分?i、 e.
success:function(msg){
?就像这里的代码:它不在同一个域上,但我在服务器端头中设置了正确的
访问控制允许源代码。这可能仍然是问题所在吗?别担心-这是因为跨域cookies。我应该意识到这一点。