jQuery发布表单和回调

时间:2012-03-05 03:49:01

标签: jquery ruby-on-rails

我的目标是允许未登录的用户查看带有书签按钮的页面。当未登录的用户点击书签按钮时,他应该在模式中显示登录表单,提交他们的凭据并添加书签(与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对象......

我在这里缺少什么?

更新

  1. 我跟着charlietfl建议并用'json'替换'script'来调用'/ account / authenticate_xhr',现在让第一篇文章正常工作。我现在需要执行我的js.erb响应...
  2. 为第二个帖子请求保留'script'并在js.erb视图中添加了escape_javascript

1 个答案:

答案 0 :(得分:1)

您将dataType设置为script ...需要json。即使请求是包含在函数中的jsonp,您仍然请求json