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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

JavaScript

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

2回答

2935閲覧

PHP AjaxでAPIアクセスして、JSONデータを取得する。

bmyn413

総合スコア7

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

JavaScript

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2016/09/29 16:33

テキストボックスにコードを入力してボタンが押されたら、別サーバのAPIにアクセスして、情報を取得するPGでつまづいています。
failの、「alert("ajaxでExceptionが投げられました");」の方に入ってしまいます。
下記、コードです。

javascript

1function get_intro() { 2 var intro_code = $('#ModelIntroduceCode').val(); 3 $.ajax({ 4 type: 'GET', 5 dataType:'text', 6 url:'Con/getIntroInfo/'+intro_code, 7 }).done(function( 8 var div1 = document.getElementById('name'); 9 div1.innerHTML = '<label id="lbl_name">' + data + '<label/>'; 10 }).fail(function(data){ 11 alert("ajaxでExceptionが投げられました"); 12 }); 13 //サブミット後、ページをリロードしないようにする 14 return false; 15 }

PHP

1public function getIntroInfo($code=0) { 2 $this->layout = ''; 3 // 情報取得APIを実行 4 if (!$this->RequestHandler->isAjax()) { 5 $this->cakeError('error404'); 6 } 7 8 $host = 'https://~.com/api/get_introducer_data.php/?introduce_code=' + $code + '&key=*******'; 9 $opts = array('http' => 10 array( 11 'method' => 'GET', 12 'header' => 'Content-type: application/x-www-form-urlencoded', 13 'ignore_errors' => true 14 ) 15 ); 16 $context = stream_context_create($opts); 17 $json = file_get_contents($host, false, $context); 18 $json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN'); 19 $arr = json_decode($json,true); 20 if ($arr === NULL) { 21 //〜データがない時の処理〜 22 $this->set('nickname', "該当する情報がありません。"); 23 }else{ 24 //〜存在しているときの処理〜 25 // 情報をセッションに保持 26 session_start(); 27 $_SESSION[‘id’] = $arr['id']; 28 // 名前を返却 29 $this->set('name', $arr['name']); 30 } 31 }

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

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

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

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

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

twin_bird

2016/09/29 18:02

クロームであればデベロッパーツール開いて、NetWorkのタグを押して、Record Networking logのボタンを押して監視すると良いです。500番とかのサーバーサイドのエラーがある場合、該当するName Pathをクリックして右側のPreviewという所を押すとエラー見れるかと思います。
twin_bird

2016/09/29 18:07 編集

Logファイルに書き込めるようなヘルパー関数とかあれば、それもデバッグの手になるかと思います。
guest

回答2

0

ひとまずデベロッパーツールでエラーを確認してみてはいかがでしょうか。

【Web開発でよく使う、特に使えるChromeデベロッパー・ツールの機能 - Build Insider】
http://www.buildinsider.net/web/chromedevtools/01

【Chrome デベロッパーツールの使い方概要 | Web Tips】
http://weback.net/utility/1410/


また、fail で受け取れる情報もあるので、そちらも確認してみてください。

JavaScript

1.fail( function( jqXHR, textStatus, errorThrown ) { 2 // エラーの場合処理 3 console.log( jqXHR.status ); 4 console.log( textStatus ); // "timeout", "error", "abort", "parsererror" 5 console.log( errorThrown ); 6} )

【jQuery.ajax() | jQuery API Documentation】
http://api.jquery.com/jquery.ajax/

投稿2016/09/29 16:44

kei344

総合スコア69398

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

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

popobot

2016/09/29 20:55 編集

横から失礼します.... 少しだけ補足です GET系の処理なら、isAjax判定をコメントアウトして、まずはブラウザで直に/Con/getIntroInfo/<code_id>を実行してうまいくようになってからajax化したほうがいいですよ。 // if (!$this->RequestHandler->isAjax()) { // $this->cakeError('error404'); //} CakeのAjax処理はデバックしづらいですよね...
kei344

2016/09/30 05:46

補足ありがとうございます!
guest

0

本筋とは少し違うかもしれませんが、GETでContent-Type指定は非常に違和感。

投稿2016/09/30 06:15

shoota

総合スコア246

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問