jQueryの.serialize()を使用して、いくつかのチェックボックスやその他の入力を含むフォームデータをPHPスクリプトに投稿しています。
post.js:
$(function(){
$("#button").click(function(){
$.ajax({
type: "POST",
url: "post.php",
data: $("form#input").serialize(),
success: function(data){
$.getJSON('post.php', function(data) {
$.each(data, function(key, val) {
})
})
}
})
})
})
post.php:
$tags = array();
foreach($_POST['checkboxes'] as $key => $value){
$tags[] = "$value";
}
$json = array(
array(
"tags" => $tags,
),
);
echo json_encode($json);
getJSONをpost.phpにポイントすると、エラーログに「PHP警告:foreach()に無効な引数が指定されました」というPHP警告が表示され、入力フォームからのデータが適切に渡されません(つまり、fwrite foreachが何も書き込まない後)。getJSONの別のファイル(data.phpなど)を参照する場合、またはそれをまったく含めない場合、投稿は正常に機能します。なぜこうなった?データを保存し、JSONデータを返す2番目のスクリプトを作成することもできますが、すべてを1つのスクリプトで行う方が簡単です。