7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ajax通信のテンプレ

Last updated at Posted at 2016-08-20

jqXHR.done()jqXHR.fail()jqXHR.always()を使用して、
JSON、JSONPからデータを取得するテンプレ

myjson.com
http://myjson.com/
ダミーのJSONデータをつくれるサイト

JSON

デモ:http://mo49.tokyo/qiita/20160819/method_json.html

文字列を取得
//AJAX通信(ver1.8...)
const request = $.ajax({
  type: 'POST',      //GET,POST
  data:{             //Dataプロパティはデータを送信(渡す)役目
    id: 1,
    mode: 'hoge',
    type: 'entry',
    sleep: 0         //Timeoutテスト用
  },
  url: "./method_json.php",
  async:true,        //非同期=true・同期=false(非推奨)
  cache:false,       //初期値はtrueでキャッシュする状態
  dataType: 'json',  //text, html, xml, json, jsonp, script
  timeout: 3000
});

request.done((data, textStatus) => {
  const len = data.length;
  for(let i=0; i<len; i++){
    $("body").append('<p>'+'id : ' + data[i].id + '<br>' + 'mode : ' + data[i].mode+ '<br>' + 'type : ' + data[i].type + '<br>' + 'date : ' + data[i].date +'</p>');
  }
  $("#ajax_status").text("通信完了!");
});

request.fail((jqXHR, textStatus, errorThrown) => {
  console.dir("----fail.----");
  console.dir("fail-jqXHR"+jqXHR);             //オブジェクト
  console.dir("fail-textStatus:"+textStatus);  //通信ステータス
  console.dir("fail-errorThrown"+errorThrown); //エラーメッセージ
});

request.always((data, textStatus) => {
  console.dir("----always.----");
  console.dir("always-data:"+data);              //データ
  console.dir("always-textStatus:"+textStatus);  //通信ステータス
});
method_json.php
<?php
//POSTパラメータを取得
$id = $_POST["id"];
$mode = $_POST["mode"];
$type = $_POST["type"];
$sleep = $_POST["sleep"];
$date = date("Y-m-d H-i-s");
sleep($sleep); //Timeoutテスト用
//受け取ったデータをjson形式で出力
$json = '[
	{
		"id" : "'.$id.'",
		"mode" : "'.$mode.'",
		"type" : "'.$type.'",
		"date" : "'.$date.'"
	}
]';
echo $json;

?>

JSONP

デモ:http://mo49.tokyo/qiita/20160819/method_jsonp.html

jsonpCallbackでコールバック関数を指定している点がポイント。

画像を取得
//AJAX通信(ver1.8...)
const request = $.ajax({
  type: 'POST',       //GET,POST
  data:{              //Dataプロパティはデータを送信(渡す)役目
    sleep: 0          //Timeoutテスト用
  },
  url: "method_jsonp.php",
  async:true,         //非同期=true・同期=false
  cache:false,        //初期値はtrueでキャッシュする状態
  dataType: 'jsonp',  //text, html, xml, json, jsonp, script
  jsonpCallback: 'jsonp_data', // callbackname jsonp側と合わせる
  timeout: 3000
});

request.done((data, textStatus) => {
  // パース処理
  const len = data.length;
  for(let i=0; i<len; i++){
    $(".wrapper").append('<p class=".single-item"><img src="'+data[i].src + '" alt='+data[i].alt+'></p>');
  }
  $("#ajax_status").text("通信完了!");
});

request.fail((jqXHR, textStatus, errorThrown) => {
  console.dir("----fail.----");
  console.dir("fail-jqXHR"+jqXHR);             //オブジェクト
  console.dir("fail-textStatus:"+textStatus);  //通信ステータス
  console.dir("fail-errorThrown"+errorThrown); //エラーメッセージ
});

request.always((data, textStatus) => {
  console.dir("----always.----");
  console.dir("always-data:"+data);              //データ
  console.dir("always-textStatus:"+textStatus);  //通信ステータス
});
method_jsonp.php
<?php
//POSTパラメータを取得
$sleep = $_POST["sleep"];
sleep($sleep); //Timeoutテスト用

$jsonp = '
jsonp_data(
  [
    {
      "src":"img/img1.JPG",
      "alt":"サモトラケのニケ"
    },
    {
      "src":"img/img2.JPG",
      "alt":"入り口ピラミッド"
    },
    {
      "src":"img/img3.JPG",
      "alt":"ナポレオン戴冠式"
    }
  ]
);
';

echo $jsonp;

?>
7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?