2011-05-30 107 views
0

我有一組鏈接(添加到心願單)與點擊事件。點擊事件檢查用戶是否登錄(ajax請求),並根據點擊的結果繼續。在用戶沒有登錄的情況下,我有一個通用的jQuery UI模式對話框,用戶可以用來登錄。jQuery:成功ajax登錄後繼續自定義點擊事件

這一切都很好,但我想擴展功能,以便能夠繼續點擊用戶使用對話框登錄後的鏈接。

即。單擊添加到願望清單 - >登錄?

  • YES - >繼續LINK CLICK(加入收藏)
  • NO - > SHOW登錄對話框 - > 用戶提交CREDENTIALS - >登錄?

  • YES =>繼續連接CLICK(添加到 心願)

  • NO => SHOW LOGIN ERROR

當然,我不想執行任何回傳,所有通過Ajax和jQuery。

感謝

回答

2

您可以將點擊操作的URL傳遞給登錄模式並在成功登錄後重定向。 另外,如果您已將其設置爲通過AJAX登錄,則可以存儲單擊事件目標,然後在成功登錄後觸發單擊事件。

類似以下內容:

var is_logged_in = false; 

$('a.add_to_wishlist').click(function(e) { 
    if(is_logged_in) { 
    //do stuff 
    } else { 
    show_modal(e.target); //pass the event target to the modal 
    } 
}); 

function show_modal(trigger) { 
    //do stuff 
    is_logged_in = true; 

    $(trigger).trigger('click'); 
} 

希望這有助於。

+0

嗯有趣的,似乎這將起作用,我仍然有一個問題是否可以通過點擊,懸停等事件作爲參數以及? function show_modal(trigger,event){$(trigger).trigger(event)};事件參數是一個回調,並使用typeof事件=='功能'檢查? – pechar 2011-05-30 08:48:46

+0

是的。您可以通過事件來代替,然後運行一個更動態的函數,它將觸發目標上的事件類型。 – devmatt 2011-05-30 08:54:15

+0

偉大的將嘗試這個並回到你身邊。萬分感謝 – pechar 2011-05-30 08:56:19

0

如果你在你的服務器端代碼控制是,那麼你應該把認證+保存希望在相同的請求列表

  1. 用戶點擊添加到收藏夾
  2. Ajax請求添加頁面,希望列表發送到服務器。看
  3. 服務器檢查,如果用戶登錄
    1. 如果用戶在登錄:該項目保存到願望清單,並返回一個成功響應。
    2. 如果用戶它未登錄:返回失敗的響應。
    3. ajax響應回調應根據響應更新UI。

如果你在你的服務器代碼的控制不是,那麼你就必須進行兩次Ajax請求,如果該認證請求是成功的。