$(function(){ test1()(); }); function test1(){ return function(){ var text = "Hello World!"; alert(text); } }
クライアント側 (JavaScript)
$.ajax({
type: "GET",
url: "/animal/auth_check/ajax_auth_check",
cache: false,
dataType: "text",
success: function(str_json, type) {
if(str_json == 'none'){
console.log('未認証です');
}else{
try{
var data=$.parseJSON(str_json);
console.log(data);
}catch(e){
alert('エラー');
}
}
},
error: function(xmlHttpRequest, textStatus, errorThrown){
console.log(xmlHttpRequest.responseText);
alert(textStatus);
}
});
サーバー側( CakePHP側)
<?php
App::uses('AppController', 'Controller');
class AuthCheckController extends AppController {
public $name = 'AuthCheck';
public function beforeFilter() {
$this->Auth->allow(); // 認証と未認証の両方に対応したページする。
parent::beforeFilter();//基本クラスのメソッドを呼び出し。
}
public function ajax_auth_check() {
$this->autoRender = false;
if(!empty($this->Auth->user('id'))){
$data=[
'username'=>$this->Auth->user('username'),
'role'=>$this->Auth->user('role'),
];
$json_str=json_encode($data);
echo $json_str;
}else{
echo 'none';
}
}
}
コンソール出力
Object {username: "kabutomusi", role: "admin"}
挙動
edit_or_public関数に引数を渡して呼び出すだけで、編集モードと一般モードが切り替わる。実装について
実装は、切替対象の要素のclass属性に、edit_only,public_onlyを追加するだけである。編集モードと一般モードの切替関数
/**
* 編集モードと一般モードの切替関数
*
* @note
* 編集モードと一般モードに関する機能である。
* この機能はedit_or_public関数として用意され、編集モードと一般モードの切替を一括管理する。
*
* @param bool flg 0:一般モード 1:編集モード
* @date 2016-9-9
*
*/
function edit_or_public(flg){
if(flg =='' || flg==null){
$('.public_only').show();
$('.edit_only').hide();
}else{
$('.public_only').hide();
$('.edit_only').show();
}
}
使用例
<input type="text" class="edit_only" value="Hello world" /> <div class="public_only" style="display:none">Hello world</div> <hr> <input type="button" class="btn-primary" value="Public Mode" onclick="edit_or_public(0)" /> <input type="button" class="btn-primary" value="Edit Mode" onclick="edit_or_public(1)" />
<input id="file1" type="file" multiple />
try {
$('#file1').val("");// changeイベントが発生するので注意
} catch (e) {
console.log('It can not be reset in IE ');
}
/**
* class属性またはname属性からフィールド名を取得する
*
* @note
* class属性が複数である場合、先頭のclass属性を取得する
*
* @parma elm 入力要素オブジェクト
* @return フィールド名
*/
function getFieldByClassOrName(elm){
var field = elm.attr('name');
if(!field){
field = elm.attr('class');
}
if(!field){
return field;
}
field = field.trim();
var a = field.indexOf(' ');
if(a != -1){
field = field.substr(0,field.length - a);
}
return field;
}
$(()=>{
var testClass = new TestClass();
testClass.execute("いろは");
});
class TestClass{
execute(value){
setTimeout(this.test1, 1000, value);
}
test1(value){
alert(value);
}
}
旧記述
setTimeout関数で非同期処理を実現できる。
window.setTimeout(function(){
console.log('非同期処理');
}, 1);
<input type="button" value="setTimeout 開始" class="btn btn-primary" onclick="start()" /><br>
<input type="button" value="setTimeout キャンセル" class="btn btn-danger" onclick="cancel()" /><br>
<div id="res1"></div>
var handle;
function start(){
handle = setTimeout(()=>{
$("#res1").append('setTimeout実行<br>');
}, 2000);
}
function cancel(){
$("#res1").append('キャンセル<br>');
clearTimeout(handle);
}
var str_dtm = "2016-10-18 16:28:50";
if(str_dtm.indexOf('-') > -1){
str_dtm = str_dtm.replace('-','/');// IEは「-」の区分に対応していないので「/」に置換
}
console.log(typeof str_dtm);
var d = new Date(str_dtm);
console.log(typeof d);
console.log(d.toLocaleString());
string object 2016/10/18 16:28:50
/**
* スネーク記法をキャメル記法に変換する
* (例) big_cat_test → BigCatTest
*/
function snakeToCamel(str){
//_+小文字を大文字にする(例:_a を A)
str = str.replace(/_./g,
function(s) {
return s.charAt(1).toUpperCase();
}
);
// 先頭を大文字化する
str = str.charAt(0).toUpperCase() + str.slice(1);
return str;
};
/**
* キャメル記法をスネーク記法に変換する
(例) BigCatTest → big_cat_test
*/
function camelToSnake(str){
// 先頭を小文字かする
str = str.charAt(0).toLowerCase() + str.slice(1);
//大文字を_+小文字にする(例:A を _a)
str = str.replace(/([A-Z])/g,
function(s) {
return '_' + s.charAt(0).toLowerCase();
}
);
return str;
};
/**
* テーブル名からモデル名に変換する
* (例) big_cat_tests → BigCatTest
*/
_tblNameToModelName(str){
if(str=='' || str==null) return '';
//_+小文字を大文字にする(例:_a を A)
str = str.replace(/_./g,
function(s) {
return s.charAt(1).toUpperCase();
}
);
// 先頭を大文字化する
str = str.charAt(0).toUpperCase() + str.slice(1);
// 末尾が「s」なら削る
var e1 = str.slice(-1);
if(e1 == 's'){
str =str.substr(0,str.length-1);
}
return str;
}
/**
* モデル名からテーブル名を作成する
(例) BigCatTest → big_cat_tests
*/
_modelNameToTblName(str){
if(str=='' || str==null) return '';
// 先頭を小文字かする
str = str.charAt(0).toLowerCase() + str.slice(1);
//大文字を_+小文字にする(例:A を _a)
str = str.replace(/([A-Z])/g,
function(s) {
return '_' + s.charAt(0).toLowerCase();
}
);
str += 's';
return str;
}