Moodle API 回复

Moodle API response

如何从 api 响应中挑出信息以仅从特定响应字段收集数据?

  var domainname = 'https://sandbox.moodledemo.net';
    var token = '234bc817adf979e93f442946c00aa223';
    var functionname = 'core_course_get_courses';
    var serverurl = domainname + '/webservice/rest/server.php' ;

    var data = {
                wstoken: token,
                wsfunction: functionname,
                moodlewsrestformat: 'json',
                
                }
    var response = $.ajax(
                            {   type: 'GET',
                                data: data,
                                url: serverurl
                            }
                         );
    console.log(response);

我正在尝试使用 response.responseJSON[] 或 response.statusText,但我遇到错误或身份不明。

如何从 responseJSON 字段中获取数据?

Response output

它是未定义的,因为目前,当您 运行 在最后几行控制台时,服务器还没有响应。由于 Ajax returns 承诺,您可以附加 then()done() 以检索 JSON 数据。

var domainname = 'https://sandbox.moodledemo.net';
var token = '234bc817adf979e93f442946c00aa223';
var functionname = 'core_course_get_courses';
var serverurl = domainname + '/webservice/rest/server.php' ;

var data = {
  wstoken: token,
  wsfunction: functionname,
  moodlewsrestformat: 'json',

}
var response = $.ajax(
                      {   type: 'GET',
                          data: data,
                          url: serverurl
                      }
                   );
console.log(response);

response.then(res=>{  //======> Returns data in JSON format
  console.log(res)    
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

您可以传递一个匿名函数来设置调用 getData 函数的数据,在 .done:

function getData(fn) {
  var domainname = 'https://sandbox.moodledemo.net';
  var token = '<<token>>';
  var functionname = 'core_course_get_courses';
  var serverurl = domainname + '/webservice/rest/server.php';

  var data = {
    wstoken: token,
    wsfunction: functionname,
    moodlewsrestformat: 'json',

  }
  var response = $.ajax({
    type: 'GET',
    data: data,
    url: serverurl
  });
  // pass the function parameter
  response.done(fn);
}

// call
getData(function (r) {
    console.log(r, r.length);
});

替代.done你也可以使用.then