Javascript/AJAX引用错误:未定义x
我有一个jQuery函数,它从PHP生成的复选框中获取值并通过AJAX发送。顺便说一句,值总是一个单词,除了字母外什么都没有。下面是脚本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.
<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);
}
});
});
});
(未测试的代码),它将向urlcheckbox.php发送请求?step=true
2+2:D的大家好哇!我已经多年没有看到一些代码直接调用XMLHttpRequest()对象了!!哈哈,实际文件中不是这样的。我把它编辑了一段时间,这样就不会让人觉得太过压抑。真的很奇怪,
这一直都是个问题,不知道在任何情况下都会发生什么。有一个错误的屏幕截图和它实际出错的那一行(可能来自chrome开发工具)它引用的错误发生的那一行是“responseArray=eval((“+xmlhttp.responseText+”);”这一行暗示是AJAX结果导致了问题,但我不明白这是怎么回事。为什么不直接使用this.id
和this.checked
?