我正在尝试从我的个人Duolingo帐户访问一个或两个数据属性。当输入以下URL时,将返回一个JSON对象:
http://www.duolingo.com/users/username(我已在网址中将ID替换为“用户名”)。

var getDuolingoData = function() {

    return $.ajax({
        type: "get",
        url: "http://www.duolingo.com/users/daniel692007&callback=?",
        dataType: "json"
    });

}

getDuolingoData().then(function(json) {

    console.log(json.site_streak); // this log is causing the error

});


但是,当我尝试从返回的对象记录密钥时,将以下错误记录到控制台:


  未捕获到的SyntaxError:意外令牌<


Ajax对我来说还很陌生,Duolingo没有我所知道的API,并且由于这是一个外部URL,我相信由于CORS,必须将dataType设置为jsonp

有明显的原因导致我无法访问访问指定URL时可以看到的JSON对象吗?

TY

最佳答案

我也遇到了同样的问题。我无法使用jsonp解决它。我最终要做的是在控制器中进行操作,该控制器从外部URL接收json并将其发送到ajax调用。

例如

return $.ajax({
        type: "post",
        url: "/ActionInProject/ProjectController",
    });


那么在Controller中,无论使用哪种服务器端语言,它都会有所不同。对我来说是C#,所以我做了类似的事情

[HttpPost]
public JsonResult ActionInProject()
{
   using(HttpClient client = new HttpClient())
   {
      var response = client.GetAsync("someothersite.com/api/link");
      return Json(client.GetAsync());
   }
}

关于javascript - Ajax调用到外部URL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48903298/

10-09 14:56