2017-06-21 64 views
-1

這裏回撥arguement是我的代碼:收到一個錯誤,同時調用在JavaScript

function getStatus(csrfToken, onSuccess) { 
    $("#statusItemsList").html(""); 
    statusData = {}; 
    postData = { 
    table: getArgs().table, 
    csrfmiddlewaretoken: csrfToken 
    }; 

    if (getArgs().table) { 
    $.post(STATUS_URL, postData, function(data) { 
     if (data.items.length < 1) { 
     $("#statusTable").hide(); 
     $("#empty-status").show(); 
     onSuccess(null); 
     } else { 
     $("#empty-status").hide(); 
     $("#statusTable").show(); 
     for (i = 0; i < data.items.length; i++) { 
      statusData[data.items[i].itemId] = data.items[i].itemStatus; 
     } 
     onSuccess(statusData); 
     } 
    }); 
    } 
} 

當我調用該函數的控制檯顯示

的onSuccess不是一個函數

我打這樣的功能:

getStatus("token", (data)=>{ }); 

請幫忙。謝謝。

+2

你是怎麼調用'getStatus'的?這聽起來像你沒有通過它的功能... –

+0

第二個參數必須是一個函數對象。 'getStatus('tokenHere',function(status){// ... status});' – Ricky

+0

尋求調試幫助的問題(「**爲什麼不是這個代碼工作?」)必須包含所需的行爲, *特定的問題或錯誤*和*在問題本身**中重現**的最短代碼*。沒有**明確問題陳述**的問題對其他讀者沒有用處。請參閱:[如何創建最小,完整和可驗證示例](https://stackoverflow.com/help/mcve)。 – Andreas

回答

0

你使用的是babel嗎?你的瀏覽器是否支持es6?如果不嘗試用預定義的函數調用你的'getstatus'函數。

function func(){ 
//blah blah 
} 
    getstatus("token", func); 
+0

我的瀏覽器不支持es6。不,我不使用babel。您的解決方案有效,但爲什麼不是(數據)=> {}工作? –

+0

我創建了一個利用箭頭功能的測試,他們工作。如果您在支持es6的瀏覽器中運行應用程序,那麼我唯一的猜測就是在運行時如何讀取函數有些問題。你可以console.log你的箭頭函數的類型,以確保它被視爲一個「函數」。我很抱歉,我無法提供更多幫助。 –

+0

解決。我沒有正確地調用它。謝謝。 –

相關問題