php用ajax创建了select标签

时间:2015-03-31 09:31:20

标签: javascript php html 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>

这是我的month.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我应该打印实际年份的消息,但它不起作用我认为问题是选择或发送价值的某个地方可以比我更聪明的人看一下这个代码并告诉我什么是错的?

2 个答案:

答案 0 :(得分:0)

您的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();
}

答案 1 :(得分:0)

您的js代码没有响应代码。此外,您的代码中还有一些其他错误会导致问题。

show_month(var)你不能把这个特定于JS的var,把它改成其他东西。

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

为了展示你需要使用的东西; 警报(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> 。(很可能您永远不需要理由)。