2015-05-14 89 views
0

我使用香草JavaScript來使AJAX調用我的API。的Javascript:回調不是一個函數

下面是我的代碼,我在一個簡單的點擊按鈕調用:

getUserByUserId : function (callback){ 

     var userid = localStorage.getItem('userid'); 
     var userApiUrl = "http://174.129.30.174:8080/users/"+userid; 

     var xmlhttp = micropaywall.getAjaxInstance(); 
     xmlhttp.onreadystatechange = function() 
     { 

      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 

       var response = JSON.parse(xmlhttp.responseText); 
       callback(xmlhttp.responseText); 
       console.log(response); 
       console.log(xmlhttp.responseText); 
      } 
     }; 
     xmlhttp.open("GET", userApiUrl, true); 
     xmlhttp.send(null); 
    } 

卻出現「回調不是一個函數」在行

回調(xmlhttp.responseText);

下面是我的回調函數:

getUserByUserIdCallback : function(response){ 

      if(response != "") 
      { 
       var res = JSON.parse(response); 
       var arrAppid = res.appIds; 
       var userid = res._id; 
       localStorage.setItem('appid', arrAppid[0]); 
       var appid = localStorage.getItem('appid'); 
       micropaywall.getUserAccountDetails(userid, appid); 
      } 
     } 

請糾正我在哪裏,我會犯錯。

+0

你是如何結合的Click事件的按鈕?確保你確實將'getUserByUserIdCallback'作爲第一個參數傳遞給它。 – techfoobar

+0

@techfoobar我綁定是這樣 mahendrakawde

+0

這應該是'' - 何處'X'是'yourObject.getUserByUserIdCallback'('yourObject這裏是包含函數getUserByUserIdCallback父對象) – techfoobar

回答

0

如果您不需要改變「回調」功能,那麼你可以直接調用它:

if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
    var response = JSON.parse(xmlhttp.responseText); 
    getUserByUserIdCallback(xmlhttp.responseText); 
    console.log(response); 
    console.log(xmlhttp.responseText); 
} 

你只需要一個回調函數來傳遞,如果你想調用時不同的行爲getUserByUserId功能。