CodeIgniter4 & jQueryを用いて同一サイト内でajax通信する方法
CodeIgniter4.4.4 & jQueryを用いて同一サイト内でajax通信したい。まずは簡単にテキストボックスにID(数値)を入力しボタンをクリックすると、別ページにajax通信しID且つ現在日時を返し、レスポンスを正常に受け取れた場合はアラートで内容を表示させるプログラムを組みたい。以下に実装方法をメモ。
目次
ルーティング設定
/app/Config/Routes.php
$routes->add('/ajax', 'Ajax_Controller::index');
$routes->post('/ajax/check', 'Ajax_Controller::check');
post指定することで普通にブラウザからページを開こうとしても404になる(post送信するとデータが返ってくる)。
Views
/app/Views/ajax/index.php
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Ajaxのテスト</title>
</head>
<body>
<label for="test-id">ID</label>
<input id="test-id" type="text">
<input id="ajax-btn" type="button" value="Ajaxのテスト">
<script type="text/javascript" src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script>
$(function(){
$('#ajax-btn').on('click', function(){
const id = $('#test-id').val();
if( !id ){
alert('IDが入力されていません。');
return false;
}
const ajax_data = {'id' : id};
$.ajax({
url:'./ajax/check',
type: 'POST',
headers: {'X-Requested-With': 'XMLHttpRequest'},
data: ajax_data,
}).done(function(result){
const json_data = JSON.parse(result);
//ステータスコードが200(成功)の場合
if( json_data.status == 200 ){
const msg = `ID:${json_data.data.id}\nnow:${json_data.data.now}`;
alert(msg);
//エラー時
}else{
alert('エラーが発生しました。');
}
//ajax自体のエラー時
}).fail(function() {
alert('エラーが発生しました。');
}).always(function() {
//完了後の処理
});
});
});
</script>
</body>
</html>
Controllers
/app/Controllers/Ajax_Controller.php
<?php
namespace App\Controllers;
class Ajax_Controller extends BaseController
{
public function index()
{
echo view('ajax/index');
}
public function check()
{
$return = array();
do{
//IDが送信されていない場合
if( !$this->request->getPost('id') ){
$return['status'] = 400; //ステータスコードは適宜変更
break;
}
$return = array(
'data' => array(
'id' => $this->request->getPost('id'),
'now' => date('Y-m-d H:i:s'),
),
'status' => 200,
);
}while(0);
echo json_encode($return);
}
}
所感
ajax通信で個人情報等、漏洩が怖いデータを取り扱うことは無いが、セキュリティ面を考慮しCSFR対策も入れといた方が良いかも。
関連記事
-
-
Codeigniter3で外部ファイル(CSS / JS)の読み込みと共通パーツ化する方法
CodeigniterでCSSやJSファイル等の外部ファイル読み込みたかった。ま ...
-
-
CodeIgniter3でCronを実行する方法
CodeIgniter3系で特定の処理をCronで自動実行したかった。以下に設定 ...
-
-
Codeigniter4で独自・外部ライブラリの作成と呼び出し方法
Codeigniter4で独自ライブラリを作成し、コントローラー側で呼び出したい ...
-
-
CodeIgniter4でCronを実行する方法
CodeIgniter4.4.4で特定の処理をCronで自動実行させたい。以下に ...
-
-
CodeIgniter4&Bootstrap&jQueryで簡易版お問い合わせページの作成
CodeIgniter4.4.4&Bootstrap&jQuer ...