php使用ajax创建了select标记


php created select tag with ajax

您好,这是我的索引代码

<!DOCTYPE html>
<html>
<body>
<script>
    function show_month(var) {
        if (windows.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
        }
        else {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.open("GET","month.php?q="+var,true);
        xmlhttp.send();
    }
</script>
<?php
    $from = (date('Y'));
    $to = 2050;
    echo '<form>';
    echo '<select name="year" onchange="show_month(this.value)">';
    for($y = $from; $y <= $to; $y++) {
        echo "<option value=$y>{$y}</option>";
    }
    echo '</select>';
    echo '<form>';
?>
<div id="txtHint"><b>here will be info</b></div>
</body>
</html>

这是我月份的代码。php

<!DOCTYPE html>
<html>
<body>
    <?php
        $q = $_GET['q'];
        echo $q;
        if ($q == 2015) {
            echo "actual year";
        }
        else {
            echo "unactual year";
        }
    ?>
</body>
</html>

正如你所看到的,我用php创建了select标记,这样我就可以通过使用循环来创建一年中的多个选项,我希望如果我选择2015年javascript应该打印实际年份的消息,但它不起作用,我认为问题出在选择或发送值的某个地方

您的js代码没有响应代码。此外,您的代码中还有一些其他错误,这将给您带来问题。

show_month(var)您不能将var作为JS特有的变量,请将其更改为其他值。

windows.XMLHttpRequest这是窗口而不是窗口。

为了展示你需要使用的东西;alert(xmlhttp.responseText);如果

    <script>
    function show_month(t) {
        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
        }
        else {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
                 document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
            }
        }
        xmlhttp.open("GET","month.php?q="+t,true);
        xmlhttp.send();
    }
</script>

最后,如果您只是返回文本,则在您的month.php中不需要<!DOCTYPE html>(很可能您永远不需要理由)。

您的js代码缺少处理服务器响应的代码

<script>
function show_month(var) {
    if (windows.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    }
    else {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
     {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
         document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
        }
   }
    xmlhttp.open("GET","month.php?q="+var,true);
    xmlhttp.send();
}