Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript/AJAX引用错误:未定义x_Javascript_Ajax - Fatal编程技术网

Javascript/AJAX引用错误:未定义x

Javascript/AJAX引用错误:未定义x,javascript,ajax,Javascript,Ajax,我有一个jQuery函数,它从PHP生成的复选框中获取值并通过AJAX发送。顺便说一句,值总是一个单词,除了字母外什么都没有。下面是脚本 <script type="text/javascript"> $(document).ready(function() { $("input:checkbox").on("click", function () { step = this.value; //document.

我有一个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>

$(文档).ready(函数(){
$(“输入:复选框”)。在(“单击”上,函数(){
步骤=此值;
//document.getElementById(“test”).innerHTML=step;
responseArray=[];
xmlhttp=新的XMLHttpRequest();
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
responseArray=eval(“+xmlhttp.responseText+”);
document.getElementById(“test”).innerHTML=responseArray;
}
}
open(“GET”,“checkbox.php?step=“+step,true”);
xmlhttp.send();
});
});
上述代码导致“ReferenceError:[this.value]未定义”。[this.value]是实际值,但实际值会根据选中的框进行更改。如果您注意到上面代码中的第5行,当我没有注释这一行时,它会在“test”中为step变量显示正确的值,所以它是在后面的。下面是checkbox.php文件,该文件完全简化为零,但仍然会导致错误

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

正如我看到您使用Jquery一样,您应该使用Jquery的AJAX对象。它大大简化了请求:

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

现在您的问题似乎是您没有正确地通过复选框获取值。复选框要么打开,要么关闭。以下是如何获取各种参数:

$(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的大家好

哇!我已经多年没有看到一些代码直接调用XMLHttpRequest()对象了!!哈哈,实际文件中不是这样的。我把它编辑了一段时间,这样就不会让人觉得太过压抑。真的很奇怪,
这一直都是个问题,不知道在任何情况下都会发生什么。有一个错误的屏幕截图和它实际出错的那一行(可能来自chrome开发工具)它引用的错误发生的那一行是“responseArray=eval((“+xmlhttp.responseText+”);”这一行暗示是AJAX结果导致了问题,但我不明白这是怎么回事。为什么不直接使用
this.id
this.checked