我的目标是允许未登录的用户查看带有书签按钮的页面。当未登录的用户点击书签按钮时,他应该在模式中显示登录表单,提交他们的凭据并添加书签(与Yelp相同)。
我的问题是我无法在创建书签请求后发布登录表单。
这是我的jQuery代码。
$("form#login-form").submit(function(event) {
event.preventDefault();
$.post('/account/authenticate_xhr', $(this).serialize(), function(data, textStatus, jqXHR) {
console.log("posted authenticate");
if (data['user_id']) {
// log in successful
console.log("logged in!"+data['user_id']);
if (data['next_action']) {
// prepare and post next action
console.log('next action!');
var next_action = data['next_action'];
var controller = next_action['controller'];
var action = next_action['action'];
var data = next_action['data'];
$j.post('/' + controller + '/' + action, { data: data }, function(data, textStatus, jqXHR) {
}, "script");
}
};
}, "script");
console.log('ending');
});
当我运行它时,只有“结束”出现在控制台中。我无法执行authenticate_xhr post请求中的代码,而后端的请求似乎正确执行。但响应authenticate_xhr向我展示了正确的JSON对象......
我在这里缺少什么?
更新
答案 0 :(得分:1)
您将dataType
设置为script
...需要json
。即使请求是包含在函数中的jsonp,您仍然请求json