首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jquery访问Coursera中的数据

使用jquery访问Coursera中的数据
EN

Stack Overflow用户
提问于 2014-12-08 11:29:42
回答 3查看 827关注 0票数 4

今天,在阅读了古瑟尔目录文档之后,我尝试使用jquery访问coursera。我编写了一个代码并得到了一个错误No 'Access-Control-Allow-Origin' header is present on the requested resource.,一些谷歌也这样做了,并发现Jsonp可以用来进行跨域请求。因此,我只是使用一个$.ajax函数向这个url发出请求,或者说这个简单url和其他一些这样的urls,但是失败了。

url上的数据类似于{"elements":[{"id":2,"shortName":"ml","name":"Machine Learning","links":{}}],"linked":{}}

我写了以下代码。

代码语言:javascript
复制
$(document).ready(function() {
$.ajax({
    url: "https://api.coursera.org/api/catalog.v1/courses/2",
    type: "GET",
    dataType: 'jsonp',
    jsonpCallback: 'localJsonpCallback',
    contentType: 'application/json',
    success: function(){
        alert("success");
    },
    error:function(jqxhr, textStatus, error){
        alert("textStatus : " + textStatus + "\n error" + error);
    }   
  }); 

  function localJsonpCallback(data) {
  alert("localJsonpCallback : " + data);
  }
  });

上面的代码失败并转到错误处理程序,其打印错误是textstatus: parseErrorError: localJsonpCallback was not called。我不知道密码出了什么问题。此外,在控制台中,我在使用url Uncaught SyntaxError: Unexpected token :时得到了错误2?callback=localJsonpCallback&_=1418037208234:1https://api.coursera.org/api/catalog.v1/courses/2

是否有必要使用jsonp回调函数?我们不能处理成功处理程序中的直接响应吗。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-08 12:14:37

这行得通

您可以在success回调中直接处理

代码语言:javascript
复制
$(document).ready(function() {
  $.ajax({
    url: "https://api.coursera.org/api/catalog.v1/courses/2",
    type: 'GET',
    dataType: "json",
    success: function(data) {
        console.log(JSON.stringify(data,null,4));
    }
  }); 
});

返回

代码语言:javascript
复制
 {
    "elements": [
        {
            "id": 2,
            "shortName": "ml",
            "name": "Machine Learning",
            "links": {}
        }
    ],
    "linked": {}
}

希望这能帮上忙

票数 3
EN

Stack Overflow用户

发布于 2014-12-08 11:49:03

试试这个:-

代码语言:javascript
复制
$(document).ready(function() {    
$.getJSON("https://api.coursera.org/api/catalog.v1/courses?ids=2,3&fields=language,shortDescription&includes=sessions&fields=status&categories", function (response) {
alert(JSON.stringify(response));
},'jsonp'); 
 });

演示

票数 2
EN

Stack Overflow用户

发布于 2014-12-08 11:51:05

在我们的例子中,您不需要使用jsonp,您可以使用通常的ajax请求

代码语言:javascript
复制
$.ajax({
    url: "https://api.coursera.org/api/catalog.v1/courses/2",
    type: "GET",
    dataType: 'json',
    success: function (res) {
      console.log(res);
    },
    error: function(jqxhr, textStatus, error) {
        alert("textStatus : " + textStatus + "\n error" + error);
    }
});

演示:http://jsbin.com/payare/1/edit?js,console

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27357022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档