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

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

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

JSONP(JSON with padding)は、JSONを使用した関数呼び出しのための仕組み。クロスドメインでのデータの受け渡しが可能です。JavaScriptからクロスドメインで容易にデータを扱うことができます。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

2604閲覧

jsonpのパース方法について

u-sukesan

総合スコア156

JSONP

JSONP(JSON with padding)は、JSONを使用した関数呼び出しのための仕組み。クロスドメインでのデータの受け渡しが可能です。JavaScriptからクロスドメインで容易にデータを扱うことができます。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/06/29 01:55

ajaxにてjsonp形式で取得したデータを
オブジェクト型にパースする関数はあるのでしょうか

var str =$.ajax({ url:'hoge.php', type:"POST", dataType: "jsonp", cache : false, async: false }).responseText; //オブジェクト型にパースしたい //str=$.getJSON(str);

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

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

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

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

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

guest

回答2

0

JSONPの場合、.responseTextを取得することはできません

というのも、JSONPは送られてきたデータをJavaScriptとして実行することで処理しているので、コールバックでしかデータを受け取ることができないからです。

投稿2017/06/29 02:02

maisumakun

総合スコア145183

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

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

0

ベストアンサー

jsonpのデータは読まれた瞬間、実行されるのでユーザー側が任意に何かをすることはありません。
サーバー側の出力方法で工夫するしかありません

投稿2017/06/29 02:01

yambejp

総合スコア114819

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

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

u-sukesan

2017/06/29 02:03

ありがとうございます。 header('Access-Control-Allow-Origin: *'); でjson形式で取得し回避しました。
mattn

2017/06/29 02:06

回避方法がやりたかった事と異なる気がします。
yambejp

2017/06/29 02:08

クロスドメインでオブジェクトをjsonとして受け取りたかっただけなのでは?
mattn

2017/06/29 02:09

@u-sukesan 正しくは success: function(data) {} を足して data を処理すれば良いだけです。またサーバ側は _callback とういパラメータを受け取り _callback(【データ部】) となる様に返せば良い事になります。 Access-Control-Allow-Origin: * を不用意に足すと security issue になり得ますのでご注意を。
u-sukesan

2017/06/29 02:15

やりたかったことはクロスドメインにて、データを取得しそれをオブジェクト形式で処理したかったのですが クロスドメインでデータを取得する方法がjsonpのみとの認識でいたので jsonp形式で取得したデータをパースする方法を質問いたしました。 header('Access-Control-Allow-Origin: *'); でjson形式で取得できるということでしたので解決できました
yambejp

2017/06/29 02:18

まぁサーバー側を調整できるなら、jsonp形式のデータ出力をするのでもいいような気がします
u-sukesan

2017/06/29 02:19

@mattn 以下の警告、ありがとうございます。 Access-Control-Allow-Origin: * を不用意に足すと security issue になり得ますのでご注意を。 そうですよね、*全て許可ということですもんね。 ローカルからのアクセスの場合、固定IPなど取得してIPアドレスなどで許容するといいのでしょうか
mattn

2017/06/29 02:22

いえ、僕が良く見て無かったのですが header("") で足されたのならば、そのページだけの適用になるので問題ないですね。nginx/apache 等でグローバルに設定されたのだと勘違いしました。 `*` にすべきかどうかは別の問題ですのですので、僕が指摘したかった事の範囲外です。
u-sukesan

2017/06/29 02:23

了解しました。 ありがとうございますm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問