问题描述
我如何从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字段中获取数据?
解决方法
它是未定义的,因为此刻,当您在最后几行运行控制台时,响应尚未从服务器发出。由于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