Javascript

【Javascript, PHP】CakePHP2.4のセキュリティコンポーネントをAjaxによるPOSTデータで通過させる。

メモ。

var data = {};
$(this).find('input[type!="submit"]').each(function() {
	data[$(this).attr('name')] = $(this).val();
});

上記のようにして特定フォームの全インプット要素(Submit属性は除く)を拾ってポストすればセキュリティコンポーネントを通過することが出来る。
しかし、セキュリティトークンは一度の処理のみ有効なので連続してポストした場合、2回目以降が403で弾かれてしまうので注意されたし。

また上記の拾い方をした場合、コントローラー内からは通常通り「$this->request->data」で受け取ることができるので非常に便利。

 

【Underscore.js】オブジェクトの空判定を行う。

めも。

var obj = {};
var arr = [];
var val = '';

console.log(_.isEmpty(obj));
console.log(_.isEmpty(arr));
console.log(_.isEmpty(val));

// true
// true
// true

 

【Underscore.js】2つのオブジェクトを比較して内容が同等であるか判定する。

Javascriptにおいて別オブジェクトは内容が同等であっても比較演算子によってtrueを得ることはできないが、_.isEqual()メソッドを用いると2オブジェクトの内容を深くまで精査し、同等とみなせるか否かをブーリアンで返却してくれる。

以下例。

var obj1 = {foo: 'bar', baz: {hoge: 'fuga'}};
var obj2 = {foo: 'bar', baz: {hoge: 'fuga'}};

console.log(_.isEqual(obj1, obj2)); // true
console.log(obj1 == obj2); // false

 

【Underscore.js】オブジェクトのプロパティを別オブジェクトに引き継ぐ。

めも。

var obj1 = {hoge: 'foo'};
var obj2 = {fuga: 'bar'};

_.extend(obj1, obj2);

=> {hoge: 'foo', fuga: 'bar'}

 

【Underscore.js】配列の先頭を取得する。

めも。

var arr = [5, 4, 3, 2, 1];

_.first(arr);

=> 5

 

【Underscore.js】配列の最後を取得する。

めも。

var arr = [5, 4, 3, 2, 1];

_.last(arr);

=> 1

 

【Underscore.js】配列の要素をシャッフルする。

めも。

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];

_.shuffle(arr);

=> [4, 7, 1, 6, 3, 8, 5, 2, 9]

【Javascript】関数オブジェクトの.call()メソッドに関するめも。

自分用。

■.call()

関数をメソッド呼び出しとして呼び出すための機能。

あらゆる関数オブジェクトがcall()メソッドを持っている。

関数オブジェクトのcallメソッドを呼び出すと、第1引数がthisに化ける。

myFunc.call(val)とすると、「myFunc」内では「this = val」となる。

jQueryのeach()メソッドなどを参考にすると良いかも。