【发布时间】:2011-05-05 05:02:46
【问题描述】:
我正在制作一个基于 PhoneGap 的 iPhone 应用程序,它将连接到 Rails 后端。我正在使用 jQuery 创建对 Rails 服务器的 Ajax 请求。我已成功获得服务器响应,但在获取 cookie 和管理会话时遇到问题。
默认情况下,Rails 在响应 HTML 请求时会发送一个 Set-cookie 标头。当 Rails 向 Ajax 请求发送 JSON 响应时,这似乎不会发生。
有没有办法在向 Rails 服务器发出 Ajax 请求时发送 Set-cookie 标头?
这是我的 ApplicationController 中的内容(我正在使用 Devise 进行身份验证):
def sign_in_and_redirect(resource_or_scope, resource=nil)
scope = Devise::Mapping.find_scope!(resource_or_scope)
resource ||= resource_or_scope
sign_in(scope, resource) unless warden.user(scope) == resource
respond_to do |format|
format.html {redirect_to stored_location_for(scope) || after_sign_in_path_for(resource) }
format.json {render :json => { :success => true, :session_id => request.session_options[:id], :current_user => current_user} }
end
这是我用来发出 Ajax 请求的 jQuery 函数
$('#user_submit').click(function(){
$.ajax({beforeSend: function(xhrObj){ xhrObj.setRequestHeader("Accept","application/json");},
type: 'POST',
url: 'http://localhost:3000/users/sign_in',
data: "{'user':{'remember_me':'0','password':'pass1word','email':'email@company.com'}}",
contentType: "application/json",
dataType: "application/json",
complete: function(data, textStatus){
}
});
});
我还没有通过谷歌搜索得出明确的答案,所以希望你能提供帮助。我找到了这个,但觉得它没有太大帮助:
http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/66751d8e54f2fee6
【问题讨论】:
标签: jquery ruby-on-rails ajax json cookies