API函数无法按预期工作

时间:2015-11-15 09:57:23

标签: javascript jquery api

我正在努力让这个功能起作用,我是javascript的新手,我正在为家庭作业做这个。我尝试下面的代码,但结果没有出现。我很确定我做错了,因为这是我第一次从API获取数据。任何提示或帮助都非常感谢。

代码:

function getStudentsInCourse() {
    $.get("http://web.cs.somecollege.edu/~doej/web/api/student/getStudents/")
    .done(function (data) {
        return data;
    })
    .fail(function (jqXHR, textStatus, errorThrown) {
    console.log("Error calling Student/getStudentsInCourse: " + errorThrown);
    });
}

呼叫:

var course []
course = getStudentsInCourse();

注意:.coursenum是从API本身引用的。

参数 coursenum - string;课程的唯一标识符

返回 JSON对象数组

API的示例数据:

[
    {
        "id": "3",
        "name": "Jax",
        "level": "Junior",
        "owner": "public",
        "photo_filename": "",
        "active": "1"
    },
    {
        "id": "4",
        "name": "Ashe",
        "level": "Junior",
        "owner": "public",
        "photo_filename": "",
        "active": "1"
    }
]

2 个答案:

答案 0 :(得分:1)

get是异步的。在您的情况下,您无法获得任何数据。因为你打电话是同步的。

function getStudentsInCourse(cb) {
   $.get("http://web.cs.somecollege.edu/~doej/web/api/student/getStudents/")
   .done(function (data) {
       cb(null, data);
    })
   .fail(function (jqXHR, textStatus, errorThrown) {
       cb(errorThrown);
   });
}


getStudentsCourse(function (err, data) {
  //your code is here
});

答案 1 :(得分:0)

我喜欢Isa Bek的答案,但Promise的解决方案更优雅。

var courses = [];

function getStudentsInCourse() {
    return $.get("http://web.cs.somecollege.edu/~doej/web/api/student/getStudents/");
}

function successHandler(response) {
    courses.push(response);
}

function failHandler(jqXHR, textStatus, errorThrown) {
    console.log("Error calling Student/getStudentsInCourse: " + errorThrown);
}

getStudentsInCourse().then(successHandler, failHandler);