ajaxを使って非同期でデータをポストするさい、その値を論理値(TRUE/FALSE)としてポストしたいというとき。
普通に書いてもstring
型として扱われてしまう。
ポストするときにわざわざboolean(true)
などと書いても論理値としてはポストしてくれない。
なので、どこかで一度データを成型しないといけない。
今回はFuelPHPでの場合を記述する。
view/example.php
<script>
$('#send_button').on('click', function() {//ボタンが押されたとき
var formdata = new FormData($('#main_form').get(0));//フォームタグからデータを取得
function() {
$.ajax({
type: 'POST',//メソッド指定
url: '<?php echo $url; ?>',//ポスト先URL
dataType: 'json',
data: formdata,
cache : false,
contentType : false,
processData : false
});
}
});
</script>
controller/rest/examplecontroller.php
$data = \Input::post();//ポストするデータの取得
if($data['true_or_false'] == 'true'){
$data['true_or_false'] = true;//論理値で上書き
}elseif($data['true_or_false'] == 'false'){
$data['true_or_false'] = false;//論理値で上書き
}
//$dataを行いたい処理に投げる
ちなみに今回は外部のAPIに投げる処理を書いていて、viewの方で頑張ってポストするデータの形を整えていたのだが、結局コントローラでいじることになってしまったのでコントローラやモデルでできることはそちらでやろうとすごく感じた。