Javascript AJAX调用PHP复选框问题
检查复选框是否被选中的简单AJAX调用有问题。 此时,无论复选框是否选中,都会打印“未选中”。我尝试过在PHP代码中更改“POST”/“GET”方法,但结果是一样的,我不知道为什么?有什么想法吗?谢谢Javascript AJAX调用PHP复选框问题,javascript,php,ajax,Javascript,Php,Ajax,检查复选框是否被选中的简单AJAX调用有问题。 此时,无论复选框是否选中,都会打印“未选中”。我尝试过在PHP代码中更改“POST”/“GET”方法,但结果是一样的,我不知道为什么?有什么想法吗?谢谢 #test.html <html> <head> <script type="text/javascript"> function load() { var x
#test.html
<html>
<head>
<script type="text/javascript">
function load()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("div1").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","checkbox.php",true);
xmlhttp.send();
}
</script>
</head>
<body>
<input type="checkbox" value="value1" name="check1"/>BOX 1</input>
<br>
<input type="checkbox" value="value2" name="check2">BOX 2</input>
<br>
<button type="button" onclick="load()">Run</button>
<div id="div1"></div>
</body>
</html>
#checkbox.php
<?php
if(isset($_GET['check1'])
{
echo "checked";
}
else
{
echo "not checked";
}
?>
#test.html
函数加载()
{
var-xmlhttp;
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“div1”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”,“checkbox.php”,true);
xmlhttp.send();
}
方框1
方框2
跑
#checkbox.php
我看不出使用AJAX有什么意义,如果复选框被选中,你就不能签入javascript吗
无论如何,我更习惯于jQuery,但您似乎没有发送任何数据,您需要测试javascript中是否选中了复选框,并将结果发送到您的请求中。在发出AJAX请求时,您实际上没有向checkbox.php
发送任何值,因此$\u GET['check1']
将永远不会有值。因此总是到达else
块
在load()
函数中,您需要确定复选框的当前状态,并在AJAX请求中将该状态发送给服务器。类似这样的东西可能能够确定该状态:
var checkedBox = '';
if (document.getElementsByName('check1')[0].checked) {
checkedBox = 'check1';
} else if (document.getElementsByName('check2')[0].checked) {
checkedBox = 'check2';
}
因此,checkedBox
将保留当前选中的第一个复选框的名称(这里有点假设单选按钮的功能,但您可以根据需要调整以实现您试图实现的任何功能),或者如果未选中任何内容,则为空值
然后您可以在URL值中使用它:
var ajaxUrl = 'checkbox.php';
if (checkedBox !== '') {
ajaxUrl += '?' + checkedBox + '=true';
}
因此,例如,如果选中了check1
,则得到的ajaxUrl
值将是:
checkbox.php?check1=true
如果未检查任何内容,则只会是:
checkbox.php
然后在AJAX请求中使用该URL:
xmlhttp.open('GET', ajaxUrl, true);
我敢肯定,这一切都可以重构和简化,但我尝试将其分解为逻辑步骤,您可以观察并从中学习。同样值得一提的是,您甚至不需要为此使用AJAX,因为您可以确定复选框的状态,并完全在客户端显示消息。我猜您这样做是为了学习AJAX。请不要告诉我您真的必须支持IE5…非常感谢您的详细解释。事实上,我对AJAX还不是很熟悉,而且还学习了一些基础知识。