FrontPage / HTML+JS+CSS / jQuery-DragandDropPlugin / PHP+jsonの保存と読み込み

** 概要 [#va1c5ea5]
AJAXでphp経由でJSONファイルをcsvで保存。

** save_ajax.js [#f2727930]

  // Save Action
  $("#btn-save").click(function(e) {
      console.log("--- Save Button .. ---");
      var ary_data = g_list_data;
      // 送るデータ形式はJSONでなければ、PHP側でエラーが出る.
      send_data = JSON.stringify(ary_data);
      console.log('send_data',send_data);
      // AJAX
      $.ajax({
          url: "./php/receive_json_save.php",
          type: "POST",
          //必要ないがサーバ側との整合のために明示しておいた方がよい。
          // contentType: "Content-Type: application/json; charset=UTF-8",   
          // 必要ないがサーバ側との整合のために明示しておいた方がよい。
          // dataType: 'json', //受信形式 
          data: send_data
      }).success(function(data, status, xhr) {
          console.log("--- << 通信成功!! >> ---");
          console.log("success!!");
          console.log("data =" + data);
          console.log("status =" + status);
          console.log("xhr =" + xhr);
      }).error(function(xhr, status, error) {
          // 通信失敗時の処理
          console.log("--- << 通信失敗!! >> ---");
          console.log("error !!");
          console.log("status =" + status);
          console.log("error =" + error);
      }).complete(function(xhr, status) {
          // 通信完了時の処理
          console.log("fin");
          console.log("status =" + status);
      });
  });

** json_save.php [#t2a9b4b3]

	<?php /* Version 2 */
		// TRUEの場合、デバッグを出力.
		$RESPONSE = TRUE;
		/******************************************/
		// DEBUG用のサブ関数
		/******************************************/
		function print_response($str){
			global $RESPONSE;
			if($RESPONSE){
				print_r($str."\n");
			}else{
				// print_r("false");
			}
		}
		/******************************************/
		// JSONファイルの読み込み
		// * JSONファイルは連想配列に変換
		/******************************************/
		$json_str = file_get_contents("php://input");
		# 第二引数がtrueの場合、連想配列になる
		$json_obj = json_decode($json_str, true);
		/******************************************/
		// ファイルオープン
		//	* ファイル名はYYYYMMDDHHMMSS.csv
		/******************************************/
		date_default_timezone_set('Asia/Tokyo');
		$SAVE_DIR = "./data/";
		$file_name = $SAVE_DIR.date("Ymd_His").".csv";
		print_response("\$file_name =".$file_name);
		// ファイルのオープン
		$fp = fopen($file_name, 'w');
		/******************************************/
		// 連想配列を整形し、csvに保存
		/******************************************/
		if($fp){
			foreach($json_obj as $i => $arrays){
				/* 方法 1 */
				// $field = array($arrays["number"], $arrays["name"], $arrays["comment"]);
				// $STATE_CSV = fputcsv($fp, $field);
				/* 方法 2 */
				// 連想配列のvalueをcsv形式に整形
				// * 連想配列の値を取得する方法 array_keys($ary), array_values($ary)
				$field = @implode(",", @array_values($arrays));
				$field = $i.",".$field."\n";
				$STATE_CSV = fputs($fp, $field);
				// デバッグログ出力
				print_response($field);
			}
		}else{
			print_response("Error: fopen()\n");
		}
		// ファイルクローズ
		$STATE_FCLOSE = fclose($fp);
		/******************************************/
		// エラー処理
		/******************************************/
		if(!$STATE_FCLOSE){
			print_response("Error: fclose($fp)\n");
		}
		if(!$STATE_CSV){
			print_response("Error: fputcsv()\n");
		}
	 ?>

  <?php /* Version 2 */
  // TRUEの場合、デバッグを出力.
  $RESPONSE = TRUE;
  /******************************************/
  // DEBUG用のサブ関数
  /******************************************/
  function print_response($str){
    global $RESPONSE;
    if($RESPONSE){
      print_r($str."\n");
    }else{
  // print_r("false");
    }
  }
  /******************************************/
  // JSONファイルの読み込み
  // * JSONファイルは連想配列に変換
  /******************************************/
  $json_str = file_get_contents("php://input");
  # 第二引数がtrueの場合、連想配列になる
  $json_obj = json_decode($json_str, true);
  /******************************************/
  // ファイルオープン
  //  * ファイル名はYYYYMMDDHHMMSS.csv
  /******************************************/
  date_default_timezone_set('Asia/Tokyo');
  $SAVE_DIR = "./data/";
  $file_name = $SAVE_DIR.date("Ymd_His").".csv";
  print_response("\$file_name =".$file_name);
  // ファイルのオープン
  $fp = fopen($file_name, 'w');
  /******************************************/
  // 連想配列を整形し、csvに保存
  /******************************************/
  if($fp){
    foreach($json_obj as $i => $arrays){
      /* 方法 1 */
  // $field = array($arrays["number"], $arrays["name"], $arrays["comment"]);
  // $STATE_CSV = fputcsv($fp, $field);
      /* 方法 2 */
  // 連想配列のvalueをcsv形式に整形
  // * 連想配列の値を取得する方法 array_keys($ary), array_values($ary)
      $field = @implode(",", @array_values($arrays));
      $field = $i.",".$field."\n";
      $STATE_CSV = fputs($fp, $field);
  // デバッグログ出力
      print_response($field);
    }
  }else{
    print_response("Error: fopen()\n");
  }
  // ファイルクローズ
  $STATE_FCLOSE = fclose($fp);
  /******************************************/
  // エラー処理
  /******************************************/
  if(!$STATE_FCLOSE){
    print_response("Error: fclose($fp)\n");
  }
  if(!$STATE_CSV){
    print_response("Error: fputcsv()\n");
  }
  ?>

** json_load.py [#l6b1dd58]
トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS