Moodle API回应

问题描述

我如何从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返回了Promise,因此您可以附加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>

,

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

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,}
  var response = $.ajax({
    type: 'GET',url: serverurl
  });
  // pass the function parameter
  response.done(fn);
}

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

除了.done之外,您还可以使用.then

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...