当前位置: 首页 > 知识库问答 >
问题:

角5(离子)JSONP请求

张鹏云
2023-03-14

我想连接到http://api.themoviedb.org,以便执行GET请求。由于我使用的浏览器(离子服务-l)我得到CORS错误。为了避免CORS错误,我尝试使用JSONP,但没有成功。

以下是我所做的:

>

从'@角/公共/超文本传输协议'导入{HttpClientModuelHttpClientJsonpModuel};
...
导入:[BrowserModuelIonicModule.forRoot(MyApp), HttpClientModuelHttpClientJsonpModuel],
...

在组件的. ts文件中:
从'rxjs/观察'导入{观察};
从'@角/公共/超文本传输协议'导入{HttpClient};
...

//在课堂上
电影:可观察

在公园里。组件的html

  <ion-content padding>
      <ion-list>
        <button ion-item>
          {{(films | async)?.title}}
        </button>
      </ion-list>
    </ion-content>

我得到一个错误,告诉它不能解析响应:

以下是错误([MY_API_KEY]是错误代码中的实际API_KEY):

Uncaught TypeError: ["ng_jsonp_callback_0","JSONP_CALLBACK"] is not a function
    at 550?api_key=[MY_API_KEY]&callback=ng_jsonp_callback_0&callback=JSONP_CALLBACK:1
(anonymous) @ 550?api_key=[MY_API_KEY]&callback=ng_jsonp_callback_0&callback=JSONP_CALLBACK:1
core.js:1350 ERROR HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "JSONP Error", url: "https://api.themoviedb.org/3/movie/550?api_key=303…lback=ng_jsonp_callback_0&callback=JSONP_CALLBACK", ok: false, …}

以下是收到的回复:

["ng_jsonp_callback_0", "JSONP_CALLBACK"]({"adult":false,"backdrop_path":"/87hTDiay2N2qWyX4Ds7ybXi9h8I.jpg","belongs_to_collection":null,"budget":63000000,"genres":[{"id":18,"name":"Drama"}],"homepage":"http://www.foxmovies.com/movies/fight-club","id":550,"imdb_id":"tt0137523","original_language":"en","original_title":"Fight Club","overview":"A ticking-time-bomb insomniac and a slippery soap salesman channel primal male aggression into a shocking new form of therapy. Their concept catches on, with underground \"fight clubs\" forming in every town, until an eccentric gets in the way and ignites an out-of-control spiral toward oblivion.","popularity":61.167619,"poster_path":"/adw6Lq9FiC9zjYEpOqfq03ituwp.jpg","production_companies":[{"name":"Twentieth Century Fox Film Corporation","id":306},{"name":"Regency Enterprises","id":508},{"name":"Fox 2000 Pictures","id":711},{"name":"Taurus Film","id":20555},{"name":"Linson Films","id":54050},{"name":"Atman Entertainment","id":54051},{"name":"Knickerbocker Films","id":54052}],"production_countries":[{"iso_3166_1":"DE","name":"Germany"},{"iso_3166_1":"US","name":"United States of America"}],"release_date":"1999-10-15","revenue":100853753,"runtime":139,"spoken_languages":[{"iso_639_1":"en","name":"English"}],"status":"Released","tagline":"Mischief. Mayhem. Soap.","title":"Fight Club","video":false,"vote_average":8.300000000000001,"vote_count":11124})

据我所知,它应该返回处理数据的javascript函数的名称。但我似乎有一些错误的方式,我传递回调,不能找到一个例子,如何与新的HttpClient。

共有1个答案

魏健柏
2023-03-14

您正在使用httpClient模块,您应该这样称呼它:

const url = "https://api.themoviedb.org/3/movie/550?api_key= [MY_API_KEY];//no callback param
this.films = this.http.jsonp(url, 'callback');

函数调用将把callback=JSONP\u callback添加到url中。

 类似资料:
  • 我试图点击一个API来执行一个非常简单的请求,但是由于我收到了一个身份验证错误,所以似乎没有提供选项,即使相同的身份验证令牌在Postman上也可以工作。代码如下: 我做错了什么?

  • 先谢谢你,克里斯

  • 构建错误,即使几次尝试从零开始清理系统。 问题:检测源问题并修复它的最佳程序是什么。 构建命令 错误 ng.cmd运行app:ionic-cordova-build--platform=android发生了一个未处理的异常:找不到builder@ionic/angull-toolkit:cordova-build的实现,请参阅“c:\users\username\appdata\local\tem

  • 我有一个ionic单页web应用程序,用户在其中完成一些信息并动态创建一些组件(新列、卡片等)。单击按钮后,我想在初始状态下完全重新加载页面。我尝试过角度生命周期挂钩,但似乎没有触发它们,因为路线没有变化。我也尝试了这条路线。导航(['home'),但它不起作用。我不需要保存任何数据。只需重新加载所有内容。

  • 我正在用电容器来构建Ionic应用程序。以下是在android Studio中打开android应用程序时运行的命令。 在Android Studio中,我运行了构建并单击Run,然后在我的设备中看到错误。我见过很多帖子都有相同的错误,但是那些帖子都是用build发布的。就我而言,我没有使用Cordova来准备android应用程序。 下面是我的Ionic应用程序的一些摘录。

  • 我一直在玩新的MVC5,我有一些模型,控制器和视图设置使用代码优先迁移。 我的问题是我如何种子用户和角色?我当前在Configuration.cs中的seed方法中种子了一些参考数据。但在我看来,user和roles表是在AccountController首次被点击之前才创建的。 我目前有两个连接字符串,这样我就可以将我的数据和身份验证分离到不同的数据库中。 我如何使用户、角色等表与其他表一起填充