3

PHP で生成されたチェック ボックスから値を取得し、AJAX 経由で送信する jQuery 関数があります。ちなみに、値は常に文字だけの単一の単語です。以下はスクリプトです。

<script type="text/javascript">
    $(document).ready(function() {
        $("input:checkbox").on("click", function () {
            step = this.value;
            //document.getElementById("test").innerHTML = step;
            responseArray = [];

            xmlhttp=new XMLHttpRequest();
            xmlhttp.onreadystatechange=function() {
                if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                    responseArray = eval("(" + xmlhttp.responseText + ")");
                    document.getElementById("test").innerHTML = responseArray;
                }
            }

            xmlhttp.open("GET", "checkbox.php?step="+step, true);
            xmlhttp.send();
        });
    });
</script>

上記のコードは、「ReferenceError: [this.value] が定義されていません」という結果になります。[this.value] は、チェックされているボックスに基づいて変化する実際の値です。上記のコードの 5 行目に気付いた場合、その行をコメントアウトしないと、step 変数の "test" に正しい値が表示されるので、それ以降になります。以下は、checkbox.php ファイルを完全に簡素化して基本的に何もなくしても、エラーが発生します。

<?php       
    $step = $_GET["step"];
    echo "[" . $step . "]";
?>
4

1 に答える 1

3

Jquery を使用していることがわかりますが、JQuery の AJAX オブジェクトを使用する必要があります。これにより、リクエストが大幅に簡素化されます。

$.ajax({
  url: 'checkbox.php?step=',
  success: function(data) {
    alert(data);
  }
});

http://api.jquery.com/jQuery.ajax/

あなたの問題は、チェックボックスの値を適切に取得していないことのようです。チェックボックスはオンまたはオフです。さまざまなパラメーターを取得する方法は次のとおりです。

$(document).ready(function () {
    $("input:checkbox").on("click", function () {
        var checkboxID = $(this).attr("ID");        // Returns the ID of the checkbox
        var isChecked = $(this).is(':checked');     // Returns true or false

        alert($(this).attr("ID") + " is " + isChecked);
    });
});

したがって、最終的なコードは次のようになります。

$(document).ready(function () {
    $("input:checkbox").on("click", function () {
        var checkboxID = $(this).attr("ID");        // Returns the ID of the checkbox
        var isChecked = $(this).is(':checked');     // Returns true or false

        $.ajax({
           url: 'checkbox.php?step=' + isChecked ,
           success: function(data) {
             alert(data);
           }
         });
    });
});

(テストされていないコード)URLにリクエストを送信しますcheckbox.php?step=true

そして2+2からこんにちは:D

于 2012-10-31T14:25:50.160 に答える