開始行:
** 概要 [#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...
// 必要ないがサーバ側との整合のために明示してお...
// 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"], $...
// $STATE_CSV = fputcsv($fp, $field);
/* 方法 2 */
// 連想配列のvalueをcsv形式に整形
// * 連想配列の値を取得する方法 array_keys($ary), array...
$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]
終了行:
** 概要 [#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...
// 必要ないがサーバ側との整合のために明示してお...
// 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"], $...
// $STATE_CSV = fputcsv($fp, $field);
/* 方法 2 */
// 連想配列のvalueをcsv形式に整形
// * 連想配列の値を取得する方法 array_keys($ary), array...
$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]
ページ名: