実現したいこと
チェックボックスで選択した値を変数としてPHPに渡したい。
発生している問題・エラーメッセージ
チェックボックスの値を変更すると、PHPに変数として値が渡される事が理想ですが、以下のエラーメッセージが表示され、PHPに値を渡す事が出来ません。
dataTypeを"text"にするとconsole.logに値が入ってきます。
またdataTypeを"text"にするとエラーメッセージは表示されませんが、PHPの方に値が入ってきません。
エラーメッセージも構文エラーを指摘されていると思うのですが、dataTypeを"text"と"json"に変更したのみでどこが間違っているのか検討がつきません。
SyntaxError: Unexpected token < in JSON at position 0
該当のソースコード
PHP
1<input type="checkbox" name="val[]" value="val1" id="ckpoint1"><label for="ckpoint1">選択肢1</label> 2<input type="checkbox" name="val[]" value="val2" id="ckpoint2"><label for="ckpoint2">選択肢2</label> 3<input type="checkbox" name="val[]" value="val3" id="ckpoint3"><label for="ckpoint3">選択肢3</label> 4 5<?php 6 if (isset($_POST['selectval'])) { 7 echo '変数有り'; 8 if ($_POST['selectval'] == 'val1') { 9 //val1の処理 10 } elseif ($_POST['selectval'] == 'val2') { 11 //val2の処理 12 } elseif ($_POST['selectval'] == 'val3') { 13 //val3の処理 14 } 15 } else { 16 echo '変数無し'; 17 } 18?>
JavaScript
1$('input[type="checkbox"]').on('click', function() { 2 if ($(this).prop('checked')){ 3 $('input[type="checkbox"]').prop('checked', false); 4 $(this).prop('checked', true); 5 6 var getval = $(this).val(); 7 $.ajax({ 8 type: "POST", 9 url: "index.php", 10 dataType : "json", 11 data: { 12 "selectval" : getval, 13 } 14 }) 15 .done(function(data){ 16 console.log(getval); 17 }) 18 .fail(function(XMLHttpRequest, status, e){ 19 console.log(e); 20 }); 21 } 22});
試したこと
var getval = $(this).val();をvar getval = 'aaa';などに変更しても同じ結果なのでvar getvalの取得には問題はないと思いますが、原因があればご教授頂けたらと思います。
url: "index.php"の部分をインクルードしているPHPファイルに修正したところ、(url: "include-test.php"に修正)
エラーメッセージは表示されなくなりましたが、PHP側に変数が渡っていないようです。
確認用に入れている「変数無し」が表示されたままになっています。
補足情報
該当のPHPコードはindex.phpではなく、index.phpで呼び出している別のPHPファイルに記述しています。
includeを使用していても問題にはならないと思っていますが、間違っていましたらご指摘頂ければと思います。
参考にしたURL:https://tagsqa.com/detail/57110

回答3件
あなたの回答
tips
プレビュー