2012-03-15 66 views
3

我有以下的代碼應該是在Ajax錯誤發送通知給用戶,並作爲一個單元的解決方案,我決定使用谷歌分析記錄這些錯誤,但是它不沒有工作,有沒有人有想法/領導或者我必須實施不同的解決方案?使用谷歌分析記錄AJAX錯誤

showNotification(title, message)是一個自定義對話框調用者。

$(document).ajaxError(function(e, xhr, settings) { 
    $(".modal").modal('hide'); 
    showNotification('Something went wrong...', 'Whoa there! Something happened which we didn\'t predict, we sent ourselves a notification. '); 
    _gaq.push(['_trackEvent', 'AjaxError', xhr.status, settings.url]); 
}); 

它工作在這個意義上,它顯示了通知,但它不發送事件的分析。 任何線索?

+0

您是否知道Analytics是否被調用?你可以檢查它,如果你使用的提琴手 – 2012-03-15 10:02:42

+0

在它發送請求的意義上調用?比不,它不發送請求。在_gaq初始化的意義上?比是的。 – 2012-03-15 10:04:00

+1

推功能是一個try語句裏面,也許你可以attatch一個調試器,看看裏面什麼happining。 – 2012-03-15 10:12:50

回答

2

問題是xhr.status是一個整數,通常爲0. trackEvent的第二個參數應該是一個字符串,顯然如果它是整數0,Google會忽略該調用。因此,使用statusText修復它:

$(document).ajaxError(function(e, xhr, settings) { 
    // Generic Google error logging 
    _gaq.push(['_trackEvent', 'AjaxError', xhr.statusText, settings.url]); 

    // Application-specific UI code 
    $(".modal").modal('hide'); 
    showNotification('Something went wrong...', 'Whoa there! Something happened which we didn\'t predict, we sent ourselves a notification. '); 
}); 

另外,我建議你把電話GA代碼之前,因爲(沒有進攻)谷歌的代碼是不太可能出錯了。

好主意,順便說一句!

0

您的代碼中可能有其他錯誤發生。我在這裏嘲笑了此功能的示例,它的工作原理:

http://jsbin.com/emocah/edit#preview

你剛剛開始追蹤此?有時,新事件需要幾天才能在GA中傳播。另外,你的頁面上是否還有其他JS錯誤?