質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CORS

CORSとはCross-Origin Resource Sharingの頭文字をとったもので、ブラウザがオリジン以外のサーバからデータを取得するシステムのことです。

Q&A

解決済

2回答

1047閲覧

fetch API で 「なろう小説API」という API をたたいてるのですが、クロスオリジンエラーになってしまいます

N---------

総合スコア46

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CORS

CORSとはCross-Origin Resource Sharingの頭文字をとったもので、ブラウザがオリジン以外のサーバからデータを取得するシステムのことです。

0グッド

0クリップ

投稿2019/03/29 06:44

編集2019/03/29 06:46

javascript 初心者です。

なろう小説APIという、小説を取得するAPIをたたいてるのですが、クロスオリジンエラーが出て困っています。

以下、エラーが出るコードです。

JacaScript

1// API サーバーのレスポンスを、コンソールに表示する関数。 2function call(jsonData) { 3 console.log(jsonData) 4} 5 6// クエリパラメータには、出力形式をjsonpにする「out=jsonp」と、コールバック関数名を call にする「callback=call」を設定しています。 7const API_URL = 'https://api.syosetu.com/novelapi/api/?out=jsonp&callback=call' 8 9fetch(API_URL, { 10 mode: 'cors', 11})

エラー画面↓
イメージ説明

ご教授お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

jsonpの処理ですよね?
単にfetchでする処理ではないのでは?

javascript

1function call(jsonData) { 2 console.log(jsonData) 3} 4const API_URL = 'https://api.syosetu.com/novelapi/api/?out=jsonp&callback=call' 5var sc=document.createElement('script'); 6sc.src=API_URL; 7document.querySelector('head').appendChild(sc);

jQuery

javascript

1function call(jsonData) { 2 console.log(jsonData) 3} 4$(function(){ 5 const API_URL = 'https://api.syosetu.com/novelapi/api/'; 6 $.ajax({ 7 url:API_URL, 8 type:"get", 9 data:{out:"jsonp",callback:"call"}, 10 dataType:"jsonp", 11 }); 12});

投稿2019/03/29 06:52

編集2019/03/29 07:15
yambejp

総合スコア114814

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

N---------

2019/03/29 06:59

回答ありがとうございます。 都合上、処理(apiサーバーにリクエスト送って受け取って表示)をjsファイル内だけで完結させたくて、htmlにsrcタグを追加とかはしたくないのです。 このような場合、どうすればよいのでしょうか...?
yambejp

2019/03/29 07:09

> htmlにsrcタグを追加とかはしたくないのです。 といって、jsonpの考え方がそういうものですからね まぁ最悪evalで処理すると言う手もあります。 もちろんjQueryを利用可能であれば$.ajaxのdataTypeに "jsonp"を指定すれば処理できますよ
N---------

2019/03/29 07:46

jqueryのコードまで書いてくださり、感謝です!
guest

0

JSONP形式は、fetch経由で取得するものではありません。JSONPをハンドリングできるライブラリを使うことをおすすめします。

投稿2019/03/29 06:47

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問