Javascript 对外部URL的Ajax调用

Javascript 对外部URL的Ajax调用,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我正在尝试从我的个人Duolingo帐户访问一两个数据属性。在输入以下URL时,将返回一个JSON对象: (我已在url中将我的id替换为“用户名”) 但是,当我尝试从返回的对象记录密钥时,控制台会记录以下错误: 未捕获的语法错误:意外标记我已与邮递员尝试了您的请求 我发现它在响应中不是有效的json,您可以在下面找到服务器返回的内容 <!DOCTYPE html><html dir="ltr"><head><title>Duolingo</

我正在尝试从我的个人Duolingo帐户访问一两个数据属性。在输入以下URL时,将返回一个JSON对象: (我已在url中将我的id替换为“用户名”)

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


未捕获的语法错误:意外标记我已与邮递员尝试了您的请求 我发现它在响应中不是有效的json,您可以在下面找到服务器返回的内容

<!DOCTYPE html><html dir="ltr"><head><title>Duolingo</title><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="robots" content="NOODP"><noscript><meta http-equiv="refresh" content="0; url=/nojs/splash"></noscript><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><meta name="apple-mobile-web-app-title" content="Duolingo"><meta name="google" content="notranslate"><meta name="mobile-web-app-capable" content="yes"><meta name="apple-itunes-app" content="app-id=570060128"><meta name="google-site-verification" content="nWyTCDRw4VJS_b6YSRZiFmmj56EawZpZMhHtKXt7lkU"><link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/aiahmijlpehemcpleichkcokhegllfjl"><link rel="apple-touch-icon" href="//d35aaqx5ub95lt.cloudfront.net/images/duolingo-touch-icon.png"><link rel="shortcut icon" type="image/x-icon" href="//d35aaqx5ub95lt.cloudfront.net/favicon.ico"><link href="//d35aaqx5ub95lt.cloudfront.net/css/ltr-9f45956e.css" rel="stylesheet"> <link rel="manifest" href="/gcm/manifest.json"></head><body><div id="root"></div><script>window.duo={"detUiLanguages":["en","es","pt","it","fr","de","ja","zs","zt","ko","ru","hi","hu","tr"],"troubleshootingForumId":647,"uiLanguage":"en","unsupportedDirections":[],"oldWebUrlWhitelist":["^/activity_stream$","^/admin_tools$","^/c/$","^/certification/","^/comment/","^/course/","^/course_announcement/","^/courses$","^/courses/","^/debug/","^/dictionary/","^/discussion$","^/event/","^/forgot_password$","^/guidelines$","^/help$","^/j$","^/mobile$","^/p/$","^/pm/","^/power_practice/","^/preview/.+/","^/quit_classroom_session","^/redirect/","^/referred","^/register_user$","^/reset_password","^/settings/reset_lang","^/skill_practice/","^/team/","^/teams$","^/topic/","^/translation/","^/translations$","^/translations/","^/troubleshooting$","^/ui_strings/","^/upload$","^/vocab","^/welcome$","^/welcome/","^/word","^/words$"]}</script><script>window.duo.version="c89bfb9"</script><script>!function(r){function n(t){if(e[t])return e[t].exports;var s=e[t]={i:t,l:!1,exports:{}};return r[t].call(s.exports,s,s.exports,n),s.l=!0,s.exports}var t=window.webpackJsonp;window.webpackJsonp=function(e,i,o){for(var c,a,f,d=0,u=[];d<e.length;d++)a=e[d],s[a]&&u.push(s[a][0]),s[a]=0;for(c in i)Object.prototype.hasOwnProperty.call(i,c)&&(r[c]=i[c]);for(t&&t(e,i,o);u.length;)u.shift()();if(o)for(d=0;d<o.length;d++)f=n(n.s=o[d]);return f};var e={},s={31:0};n.e=function(r){function t(){c.onerror=c.onload=null,clearTimeout(a);var n=s[r];0!==n&&(n&&n[1](new Error("Loading chunk "+r+" failed.")),s[r]=void 0)}var e=s[r];if(0===e)return new Promise(function(r){r()});if(e)return e[2];var i=new Promise(function(n,t){e=s[r]=[n,t]});e[2]=i;var o=document.getElementsByTagName("head")[0],c=document.createElement("script");c.type="text/javascript",c.charset="utf-8",c.async=!0,c.timeout=12e4,n.nc&&c.setAttribute("nonce",n.nc),c.src=n.p+""+({0:"js/vendor",1:"js/app",2:"strings/zh-TW",3:"strings/zh-CN",4:"strings/vi",5:"strings/uk",6:"strings/tr",7:"strings/tl",8:"strings/th",9:"strings/te",10:"strings/ta",11:"strings/ru",12:"strings/ro",13:"strings/pt",14:"strings/pl",15:"strings/pa",16:"strings/nl-NL",17:"strings/ko",18:"strings/ja",19:"strings/it",20:"strings/id",21:"strings/hu",22:"strings/hi",23:"strings/fr",24:"strings/es",25:"strings/en",26:"strings/el",27:"strings/de",28:"strings/cs",29:"strings/bn",30:"strings/ar"}[r]||r)+"-"+{0:"2b9feda7",1:"662ee5e7",2:"c444b0a9",3:"a5658bf8",4:"3ea447d8",5:"1573893a",6:"c32ed883",7:"52cac8bc",8:"2c58adbb",9:"681aaba6",10:"d05b78c6",11:"f4071afb",12:"a1349f5c",13:"6a57ec9f",14:"762dfc94",15:"8a02897a",16:"4e429b1e",17:"8e921ddf",18:"524cc86b",19:"8df42324",20:"7d8a8fc5",21:"4fde5d79",22:"509b8809",23:"9f09bcfb",24:"77da48d4",25:"44cfb321",26:"13b268cc",27:"c0cac402",28:"3ecdeec1",29:"dfd2b224",30:"074ffddd"}[r]+".js";var a=setTimeout(t,12e4);return c.onerror=c.onload=t,o.appendChild(c),i},n.m=r,n.c=e,n.d=function(r,t,e){n.o(r,t)||Object.defineProperty(r,t,{configurable:!1,enumerable:!0,get:e})},n.n=function(r){var t=r&&r.__esModule?function(){return r.default}:function(){return r};return n.d(t,"a",t),t},n.o=function(r,n){return Object.prototype.hasOwnProperty.call(r,n)},n.p="/",n.oe=function(r){throw console.error(r),r}}([])</script><script src="//d35aaqx5ub95lt.cloudfront.net/js/vendor-2b9feda7.js"></script>                       <script src="//d35aaqx5ub95lt.cloudfront.net/strings/en-44cfb321.js"></script>     <script src="//d35aaqx5ub95lt.cloudfront.net/js/app-662ee5e7.js"></script></body></html>

Duolingo window.duo={“detUiLanguages”:[“en”、“es”、“pt”、“it”、“fr”、“de”、“ja”、“zs”、“zt”、“ko”、“ru”、“hi”、“hu”、“tr”]、“troubleshootingForumId”:647,“uiLanguage”:“en”、“unsupportedDirections”:[]、“oldWebUrlWhitelist”:[“^/activity\u stream$”、“^/admin\u tools$”、“^/c/”、“^/certification/”、“、“^/comment/”、“^/course/”、“、“^/course/”、“、“^/course/”,“^/courses/”、“^/debug/”、“^/dictionary/”、“^/discussion$”、“^/event/”、“^/password$”、“^/guidelines$”、“^/help$”、“^/j$”、“^/mobile$”、“^/pm/”、“^/power\practice/”、“^/preview/”、“、“^/退出教室会话”、“^/redirect/”、“、“/refered/”、“、^/register$”、“、“^/register用户$”、“、“、“^/reset/”、“、”密码设置”、“、“、“/practice/”、“、”团队/技能设置、“、”重置“、“、”重置“、“、“^/主题/“,“^/translation/”,“^/translations/”,“^/translations/”,“^/probleshooting$”,“^/upload$”,“^/vocab/”,“^/welcome$”,“^/words/”,“^/words/”,“^/words$”]}window.duo.version=“c89bfb9”!function(r){函数n(t){if(e[t]返回e[t]。导出;var s=e[t]{i:t,l:!1,导出:{r.t,导出],{svar t=window.webpackJsonp;window.webpackJsonp=function(e,i,o){for(var c,a,f,d=0,u=[];d我和邮递员试过你的请求
我发现它在响应中不是有效的json,您可以在下面找到服务器返回的内容

<!DOCTYPE html><html dir="ltr"><head><title>Duolingo</title><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="robots" content="NOODP"><noscript><meta http-equiv="refresh" content="0; url=/nojs/splash"></noscript><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><meta name="apple-mobile-web-app-title" content="Duolingo"><meta name="google" content="notranslate"><meta name="mobile-web-app-capable" content="yes"><meta name="apple-itunes-app" content="app-id=570060128"><meta name="google-site-verification" content="nWyTCDRw4VJS_b6YSRZiFmmj56EawZpZMhHtKXt7lkU"><link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/aiahmijlpehemcpleichkcokhegllfjl"><link rel="apple-touch-icon" href="//d35aaqx5ub95lt.cloudfront.net/images/duolingo-touch-icon.png"><link rel="shortcut icon" type="image/x-icon" href="//d35aaqx5ub95lt.cloudfront.net/favicon.ico"><link href="//d35aaqx5ub95lt.cloudfront.net/css/ltr-9f45956e.css" rel="stylesheet"> <link rel="manifest" href="/gcm/manifest.json"></head><body><div id="root"></div><script>window.duo={"detUiLanguages":["en","es","pt","it","fr","de","ja","zs","zt","ko","ru","hi","hu","tr"],"troubleshootingForumId":647,"uiLanguage":"en","unsupportedDirections":[],"oldWebUrlWhitelist":["^/activity_stream$","^/admin_tools$","^/c/$","^/certification/","^/comment/","^/course/","^/course_announcement/","^/courses$","^/courses/","^/debug/","^/dictionary/","^/discussion$","^/event/","^/forgot_password$","^/guidelines$","^/help$","^/j$","^/mobile$","^/p/$","^/pm/","^/power_practice/","^/preview/.+/","^/quit_classroom_session","^/redirect/","^/referred","^/register_user$","^/reset_password","^/settings/reset_lang","^/skill_practice/","^/team/","^/teams$","^/topic/","^/translation/","^/translations$","^/translations/","^/troubleshooting$","^/ui_strings/","^/upload$","^/vocab","^/welcome$","^/welcome/","^/word","^/words$"]}</script><script>window.duo.version="c89bfb9"</script><script>!function(r){function n(t){if(e[t])return e[t].exports;var s=e[t]={i:t,l:!1,exports:{}};return r[t].call(s.exports,s,s.exports,n),s.l=!0,s.exports}var t=window.webpackJsonp;window.webpackJsonp=function(e,i,o){for(var c,a,f,d=0,u=[];d<e.length;d++)a=e[d],s[a]&&u.push(s[a][0]),s[a]=0;for(c in i)Object.prototype.hasOwnProperty.call(i,c)&&(r[c]=i[c]);for(t&&t(e,i,o);u.length;)u.shift()();if(o)for(d=0;d<o.length;d++)f=n(n.s=o[d]);return f};var e={},s={31:0};n.e=function(r){function t(){c.onerror=c.onload=null,clearTimeout(a);var n=s[r];0!==n&&(n&&n[1](new Error("Loading chunk "+r+" failed.")),s[r]=void 0)}var e=s[r];if(0===e)return new Promise(function(r){r()});if(e)return e[2];var i=new Promise(function(n,t){e=s[r]=[n,t]});e[2]=i;var o=document.getElementsByTagName("head")[0],c=document.createElement("script");c.type="text/javascript",c.charset="utf-8",c.async=!0,c.timeout=12e4,n.nc&&c.setAttribute("nonce",n.nc),c.src=n.p+""+({0:"js/vendor",1:"js/app",2:"strings/zh-TW",3:"strings/zh-CN",4:"strings/vi",5:"strings/uk",6:"strings/tr",7:"strings/tl",8:"strings/th",9:"strings/te",10:"strings/ta",11:"strings/ru",12:"strings/ro",13:"strings/pt",14:"strings/pl",15:"strings/pa",16:"strings/nl-NL",17:"strings/ko",18:"strings/ja",19:"strings/it",20:"strings/id",21:"strings/hu",22:"strings/hi",23:"strings/fr",24:"strings/es",25:"strings/en",26:"strings/el",27:"strings/de",28:"strings/cs",29:"strings/bn",30:"strings/ar"}[r]||r)+"-"+{0:"2b9feda7",1:"662ee5e7",2:"c444b0a9",3:"a5658bf8",4:"3ea447d8",5:"1573893a",6:"c32ed883",7:"52cac8bc",8:"2c58adbb",9:"681aaba6",10:"d05b78c6",11:"f4071afb",12:"a1349f5c",13:"6a57ec9f",14:"762dfc94",15:"8a02897a",16:"4e429b1e",17:"8e921ddf",18:"524cc86b",19:"8df42324",20:"7d8a8fc5",21:"4fde5d79",22:"509b8809",23:"9f09bcfb",24:"77da48d4",25:"44cfb321",26:"13b268cc",27:"c0cac402",28:"3ecdeec1",29:"dfd2b224",30:"074ffddd"}[r]+".js";var a=setTimeout(t,12e4);return c.onerror=c.onload=t,o.appendChild(c),i},n.m=r,n.c=e,n.d=function(r,t,e){n.o(r,t)||Object.defineProperty(r,t,{configurable:!1,enumerable:!0,get:e})},n.n=function(r){var t=r&&r.__esModule?function(){return r.default}:function(){return r};return n.d(t,"a",t),t},n.o=function(r,n){return Object.prototype.hasOwnProperty.call(r,n)},n.p="/",n.oe=function(r){throw console.error(r),r}}([])</script><script src="//d35aaqx5ub95lt.cloudfront.net/js/vendor-2b9feda7.js"></script>                       <script src="//d35aaqx5ub95lt.cloudfront.net/strings/en-44cfb321.js"></script>     <script src="//d35aaqx5ub95lt.cloudfront.net/js/app-662ee5e7.js"></script></body></html>

Duolingo window.duo={“detUiLanguages”:[“en”、“es”、“pt”、“it”、“fr”、“de”、“ja”、“zs”、“zt”、“ko”、“ru”、“hi”、“hu”、“tr”],“troubleshootingForumId”:647,“uiLanguage”:“en”、“unsupportedDirections”:[],“oldWebUrlWhitelist”:[“^/activity\u stream$”、“^/admin\u tools$”、“^/c/”、“^/certification/”、“、“^/comment/”、“^/course/”、“、“^/course/”、“、“^/course/,”^/课程“/”、“^/debug/”、“^/dictionary/”、“^/discussion$”、“^/event/”、“^/guidelines$”、“^/help$”、“^/j$”、“^/mobile$”、“^/p/”、“^/power\u practice/”、“^/preview/”、“^/退出教室会话”、“^/redirect/”、“、“^/referered/”、“^/referenced/”、“^/register\u用户$”、“、“^/reset/”、“、“^/password/”、“、“/practice/”、“、“^/reset/”、“、技能设置小组、“、”、“^/主题/“,“^/translation/”,“^/translations/”,“^/translations/”,“^/probleshooting$”,“^/upload$”,“^/vocab/”,“^/welcome$”,“^/words/”,“^/words/”,“^/words$”]}window.duo.version=“c89bfb9”!function(r){函数n(t){if(e[t]返回e[t]。导出;var s=e[t]{i:t,l:!1,导出:{r.t,导出],{svar t=window.webpackJsonp;window.webpackJsonp=function(e,i,o){for(var c,a,f,d=0,u=[];d同样的问题也发生在我身上。我无法使用jsonp解决它。我最终做的是在控制器中执行一个操作,从外部url接收json并将其发送到ajax调用

为埃克斯梅普

return $.ajax({
        type: "post",
        url: "/ActionInProject/ProjectController",
    });
然后在控制器中,无论使用哪种服务器端语言,都会有所不同

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

同样的问题也发生在我身上。我无法使用jsonp解决它。我最终做的是在控制器中执行一个操作,从外部url接收json并将其发送到ajax调用

为埃克斯梅普

return $.ajax({
        type: "post",
        url: "/ActionInProject/ProjectController",
    });
然后在控制器中,无论使用哪种服务器端语言,都会有所不同

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

您可以向我们展示导致错误的代码部分吗?请添加更多代码,包括密钥的记录位置。转到浏览器开发人员工具中的“网络”选项卡,并拍摄已添加的返回响应的屏幕截图。可能是您调用的url返回的是HTML而不是JSON。字符<可能属于开头标记。如果删除dataType:json并记录响应,您会看到什么。您能向我们显示导致错误的代码部分吗?请添加更多代码,包括记录密钥的位置。转到浏览器开发人员工具中的“网络”选项卡,并拍摄已添加的返回响应的屏幕截图。可能是您正在调用的url是returning HTML而不是JSON。<字符可能属于开始标记。如果您删除dataType:JSON并记录响应,您会看到什么。因此,我肯定我会在这里暴露我的无知,但这本质上意味着我无法访问每次直接ping URL时返回的漂亮、嗡嗡的JSON对象?是否有解决方法他的?你有访问这个API的权限吗?没有。它只是一个外部URL。访问(没有虚假的回调参数)在Postman中运行良好,并返回JSON。我怀疑上面看到的响应(看起来像网站主页的HTML)是因为服务器不确定如何处理该请求,或者认为该请求可能是恶意的。所以我肯定我会在这里暴露我的无知,但这本质上意味着我无法访问每次直接ping URL时返回的漂亮、嗡嗡作响的JSON对象。是否有解决方法?您有访问此API的权限吗?没有。这只是一个外部URL。访问(没有虚假的回调参数)在Postman中工作正常并返回JSON。我怀疑上面看到的响应(看起来像网站主页的HTML)是因为服务器不确定如何处理该请求,或者认为它可能是恶意的。