我正在尝试使用jQuery登录Sinatra应用程序,但Sinatra似乎根本无法识别它,这是我的代码,看看用户是否已登录:
Sinatra app:
get '/logged_in' do
if session[:logged_in] == true
status 200
"OK"
else
status 200
"False"
end
end
当我在浏览器中浏览/logged_in
时,我看到OK
,但是当我执行以下Javascript时,我将False
打印到控制台 - 对我来说似乎很奇怪。< / p>
var r = $.ajax({
type: "GET",
url: "http://xxx-xxx.com/logged_in"
});
r.success(function(msg) {
console.log(msg);
});
任何见解都会得到满足!
答案 0 :(得分:1)
如果你能提供更多细节,那将是件好事。 (浏览器,按时间顺序排列的请求日志,包括HTTP状态代码,甚至来自wireshark的转储。)不过这是我的猜测:
var r = $.ajax({
cache: false,
type: "GET",
url: "/logged_in",
success: function(msg) {
console.log(msg);
}
});
有些浏览器会主动缓存AJAX请求,尤其是GET请求。所以你可能想试试cache: false
。稍后添加成功函数对我来说也很奇怪,我从未在任何代码中看到过。
编辑:服务器是否在同一域上回答了AJAX请求? (域必须与浏览器测试中的域相同。)通常不需要在URL中指定域,因此我在此处的代码中删除了它。毕竟,由于Same Origin Policy,这可能是一个问题。
答案 1 :(得分:0)
我会打赌这是一个jQuery问题,而不是Sinatra问题。检查是否正在为ajax请求发送cookie。为什么没有发送cookie会有很多原因。