jQueryのAjax($.ajax)を使って以下のようにクロスドメインアクセスしようとしています。
以下のコードではTARGET_URLに指定されたURLにアクセスし、その結果200OKで接続疎通が確認できたのか、出来なかったのかを判定しようとしています。いわゆる疎通チェックのためにJSONPを利用したクロスドメイン制約の迂回をしています。
そのためTARGET_URLで取得できるデータはJSONP形式ではありません。
相手がJSONP形式ではなくてHTML形式の場合には結果的に常にerrorを通ってcompleteのコードが実行されます。
(success, error, completedの書き方が古いとか不適切という所は置いておいてください)
error→completedではありますが、きちんとstatusには疎通結果が200とか404とか入ってくるので疎通確認の目的は果たせ得ている感じです。ここで2点知りたいことがあります。
- dataType: 'JSONP'としておいてアクセス先がHTML形式ですとJSの構文エラーのようになるようです。HTMLの内容は疎通確認先のサイトによって様々だと思いますが、思わぬ問題が発生したり懸念などはあるでしょうか。(たまたまアクセス先が悪意のあるJSOMP形式のコンテンツで、コールバック関数内に不適切なコードが書かれているような場合を除きます)
- 疎通確認だけではなくて、取得したデータ(コンテンツソース)を文字列として取得したいのですが方法はあるでしょうか。もともと<script></script>の中身を読んできている構造だと思うので、何か方法があるのでは無いかと思っているのですが方法がわかりません。
出来ればjQueryを活用して完結な記述方法があると嬉しいです。
$.ajax({ type: 'GET', url: TARGET_URL, dataType: 'jsonp', timeout:10000, jsonpCallback:"dummycallback" success: function(json){ alert('success'); }, error: function(json){ }, complete: function(json){ if (json['status'] == 200) { alert('connection OK'); } else { alert('connection NG'); } }, });
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。