ajax通信レスポンス授受でエラーが発生する。
jsonファイルをjsで受け取れない。
javascriptからjqueryのajaxを使用してPHPにデータを送り
その後、jsonファイルをレスポンスとしてjavascriptへ送付したときにエラーが発生してしまいました。
このエラーはjsのunitが'year'の時は発生せず、'month'と'day'の時だけ発生します。
問題箇所は特定ができており、PHPのcase"month"の計算式とcase "day"の計算式が悪かったようです。
二つとも計算式の中に$yearがあり、この場合の値はNULLとなります。
この2つのコードを消せばうまく動きます。
ただ不思議なのがPHPファイルだけで実行した際にはエラーなどでコードが
途中で止まることはなく実行できていました。
jsonにエンコードしてそれをjsに渡すとエラーになってしまいます。
これはなぜでしょうか?
恐れ入りますが、ご教授いただけると幸いです。
よろしくお願いいたします。
javascript(リクエスト元)(レスポンス先)
//jqueryを使用
$('.update_btn').on('click',function(){
$.ajax({
url: './SQL_SELECT.php'
, method: 'POST'
,timeout: 10000
, data:
{unit:'year',//手動でyear,month,dayに変更する
start_point:$(`#start`).val(),
end_point:$(`#end`).val()
}
}
).done(function(result){
console.log("成功");
console.log(result);
})
.fail(function(){
console.log("失敗");
})
});
php(リクエスト先)(レスポンス元)
$unit = $_POST['unit'];
$start_point =new DateTime($_POST['start_point']);
$end_point =new DateTime($_POST['end_point']);
$dateDifference =abs(strtotime($_POST["end_point"])- strtotime($_POST["start_point"]));
switch($unit){
case "year";
$years = floor($dateDifference / (365 * 60 * 60 * 24));
break;
case "month";
$months = floor(($dateDifference - $years * 365 * 60 * 60 * 24) / (30 * 60 * 60 * 24));//←原因1
break;
case "day";
$days = floor(($dateDifference - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 *24) / (60 * 60 * 24));//←原因2
}
header("Content-type: application/json; charset=UTF-8");
echo json_encode("test");
0