2013-09-16 33 views
0

我有以下代碼,我用Yii框架刪除一個註冊。 這段代碼是自動生成的,我想捕獲它是否在對話框打開時被取消。如果ajax完成,我將保存在我的用戶日誌中。捕獲從jquery submitForm的響應

jQuery(function($) { 
    jQuery('body').on('click','#yt0', function(){ 
     if (confirm('Want to delete it?')) { 
      jQuery.yii.submitForm(this,'/yiiProject/index.php?r=project/delete&id=168',{}); 
      return false; 
     } 
     else 
      return false; 
    }); 

    jQuery('body').tooltip({'selector':'a[rel=tooltip]'}); 
    jQuery('body').popover({'selector':'a[rel=popover]'}); 
}); 
+0

我不認爲這是可能的,爲什麼不寫在日誌中,雖然在服務器端代碼? –

+0

因爲我需要在所有課程中寫作,如果我在全球做某些事情,我只會寫一次。你有什麼建議嗎? – Renan

+0

不熟悉Yii,但從瞭解jQuery,你不能僅僅從外部代碼中「點擊」這些事件。服務器端真的是首選方式,確定你不能那樣做? –

回答

1

大多數你可以儘可能我可以看到做的是重寫confirm方法和處理的情況下,當用戶單擊確定:

var originalConfirm = window.confirm; 
window.confirm = function(msg) { 
    if (originalConfirm(msg)) { 
     //log... 
     return true; 
    } 
    return false; 
}; 

您還可以覆蓋的Yii自動通過sumbitting完全生成的代碼AJAX自己則總是返回false:

if (originalConfirm(msg)) { 
    $.post("/yiiProject/index.php?r=project/delete&id=168", function() { 
     //success, write to log... 
    }); 
    return false; 
} 
+0

我認爲這會解決我的問題。你知道我怎麼能得到ajax鏈接?例如在這種情況下:「/yiiProject/index.php?r=project/delete&id=168」 – Renan

+0

@Renan當然,請參閱我的編輯。 –

+0

我認爲重寫Yii代碼不是最好的解決方案,因爲如果我這樣做,我必須在所有類中重寫。通過第一塊代碼,我可以在確認時加以解釋,如果我能得到我發送問題的鏈接將得到解決。我不確定,但如果我可以獲得窗口提交鏈接,它將完成。 – Renan

0

嘗試使用全局AJAX事件:

http://api.jquery.com/ajaxSuccess/

$(document).ajaxSuccess(function(event, xhr, settings) { 
    if (settings.url == "ajax/test.html") { 
     $(".log").text("Triggered ajaxSuccess handler. The ajax response was: " + 
     xhr.responseText); 
    } 
}); 
+0

很抱歉,我編寫的jQuery代碼是自動生成的。 我只想在ajax調用被引用時獲取url。 – Renan

+0

每個AJAX請求都會觸發全局事件。 – HarryFink