Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.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调用PHP复选框问题_Javascript_Php_Ajax - Fatal编程技术网

Javascript AJAX调用PHP复选框问题

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

检查复选框是否被选中的简单AJAX调用有问题。 此时,无论复选框是否选中,都会打印“未选中”。我尝试过在PHP代码中更改“POST”/“GET”方法,但结果是一样的,我不知道为什么?有什么想法吗?谢谢

      #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还不是很熟悉,而且还学习了一些基础知识。