2012-03-05 51 views
0

我的目標是允許非登錄用戶使用書籤按鈕查看頁面。當非登錄用戶點擊書籤按鈕時,他應該以模式呈現登錄表單,提交他們的憑證並添加書籤(與Yelp相同)。jQuery發佈表單和回調

我的問題是我無法讓登錄表單發佈創建書籤請求。

這是我的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發佈請求中的代碼,而似乎請求在後端正確執行。但是,響應authenticate_xhr顯示我正確的JSON對象...

我在這裏錯過了什麼?

更新:

  1. 我跟着charlietfl建議,取而代之的 'script' 與 'JSON' 叫 '/帳號/ authenticate_xhr' 現在得到的第一個崗位工作的罰款。我現在需要執行我js.erb響應......在js.erb鑑於第二POST請求
  2. 一直處於「腳本」,並添加escape_javascript
+1

你是否檢查過firebug或chrome開發工具來查看請求是否被創建? 'if(data ['user_id'])'是否爲真? – gideon 2012-03-05 04:01:42

回答

1

您設置dataTypescript ...需求爲json。即使請求是用jsonp封裝在一個函數中,你仍然請求json

+0

好的......現在你正在返回html而不是json。刪除dataType,如果它是HTML .... jQuery將默認爲HTML類型 – charlietfl 2012-03-05 04:33:35

+0

如果它是HTML內的腳本它仍然是HTML。你之前展示的是html – charlietfl 2012-03-05 04:43:31

+0

不設置數據類型 – charlietfl 2012-03-05 04:52:24