2015-05-14 178 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功能。