Javascript:回调不是一个函数

时间:2015-05-14 07:53:56

标签: javascript callback

我使用vanilla javascript对我的API进行AJAX调用。

以下是我点击一个简单按钮时调用的代码:

<component>
   <sequenceNumber value="4"/>
   <observation classCode="OBS" moodCode="EVN">
      <!--templateID for the Numeric Response Pattern-->
      <templateId root="2.16.840.1.113883.10.20.33.4.4"/>
      <languageCode></languageCode>
      <entryRelationship typeCode="REFR">
         <!--templateID for Response Media Pattern template-->
         <!--<templateId root="2.16.840.1.113883.10.20.33.4.2"/>-->
      </entryRelationship>
      <id extension="ob4" root="2.16.840.1.113883.3.1817.1.6"/>
      <code code="q4" codeSystem="Continua-Q-OID">
         <originalText>How many hours did you sleep last night?</originalText>
      </code>
      <statusCode code="COMPLETED"/>
      <value xsi:type="INT" value="7"/>
      <referenceRange typeCode="REFV">
         <!--templateID for the Response Reference Range Pattern-->
         <templateId root="2.16.840.1.113883.10.20.33.4.3"/>
         <observationRange>
            <text></text>
            <value xsi:type="IVL_INT">
               <low value="0"/>
               <high value="24"/>
            </value>
         </observationRange>
      </referenceRange>
   </observation>
</component>

但我在第

行得到“回调不是一个功能”

回调(xmlhttp.responseText);

以下是我的回调函数:

    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);
    }

请纠正我错误的地方。

1 个答案:

答案 0 :(得分:0)

如果您不需要更改&#34;回拨&#34;函数然后你可以直接调用它:

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

如果在调用getUserByUserId函数时需要不同的行为,则只需要传入回调函数。