3

我有一个 jQuery 函数,它从 PHP 生成的复选框中获取值并通过 AJAX 发送它。顺便说一句,该值始终是一个单词,只有字母。下面是脚本。

<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] is not defined”。[this.value] 是实际值,但会根据选中的框而变化。如果您注意到上面代码中的第 5 行,当我不注释该行时,它会在“test”中为 step 变量显示正确的值,所以它是在那之后的东西。下面是 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 回答