我已经坚持了两周的代码 . 我想要一个包含2个下拉列表的页面 . 第一个DD将显示数据库中的所有“状态”,第二个DD应基于第一个DD的值 . 我认为我的代码还可以,但问题是与wordpress本身的集成 . 是否需要将页面作为ajax读取的代码/函数/等?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>None</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">

    function parseResponse(adminResponse,nList){

        var nText = adminResponse.getElementsByTagName('optionText');
        var nVal = adminResponse.getElementsByTagName('optionVal');
        nList.options.length = 1;
        for (i=0; i<nText.length; i++)
            {
             var nOption = document.createElement('option');
             nOption.appendChild(document.createTextNode(nText[i].firstChild.data));
             nOption.value = nVal[i].firstChild.data;
             nList.appendChild(nOption);
            }
    }

    function update(nVal,nList,getFile){

        var adminRequest = window.XMLHttpRequest ? new XMLHttpRequest()
                             : window.ActiveXObject
                             ? new ActiveXObject("Microsoft.XMLHTTP")
                             : null;
        adminRequest.onreadystatechange = function()
            {
             if (adminRequest.readyState == 4)
                {
                 if (adminRequest.status == 200)
                    {
                     var adminResponse = adminRequest.responseXML;
                     parseResponse(adminResponse,nList);
                    }
                 else   {
                     alert('Error ' + getFile + ' --- ' + adminRequest.statusText);
                    }
                }
            }
        var infoStr = "?choice="+nVal;
        adminRequest.open("GET", getFile + infoStr, true);
        adminRequest.send(null);
    }

    function init(){

        var nForm = document.forms[0];
        nForm['state'].onchange = function()
            {
             if (this.value != "")
                {
                 update(this.value,nForm['city'],'<?php echo get_template_directory_uri(); ?>/updateGroup.php');
                }
            }
    }

    navigator.appName == "Microsoft Internet Explorer" ? attachEvent('onload', init, false) : addEventListener('load', init, false);    

</script>
<style type="text/css">

     body {background-color: #eae3c6; margin-top: 60px;}
     form {width: 430px; margin: auto;}
     fieldset {width: 410px; background-color: #f0fff0; border: 1px solid #87ceeb;}
     legend {font-family: times; font-size: 14pt; color: #00008b; background-color: #87ceeb;
         padding-left: 3px; padding-right: 3px ; margin-bottom:5px;}
     select {font-family: tahoma; font-size: 10pt; width: 160px; margin-left: 35px; margin-bottom: 10px;}   

</style>
</head><?php /* Template Name: Practice */
    ?>
    <body>
    <?php

        global $wpdb;

        $query = "SELECT * FROM zipcode GROUP BY FULLSTATE ASC";
        $result = mysql_query($query) or die(mysql_error());

        while($row = mysql_fetch_array($result,MYSQL_ASSOC))
        {
           $dd .= "<option value='".$row['STATE']."'>".$row['FULLSTATE']."</option>";
        }

    ?>
        <form action="">
           <fieldset>
            <legend>Form</legend>
                <select name="state">
                    <option value="">Select State</option>
                    <?php echo $dd; ?>
                </select>
                <select name="city" onchange="alert(this.value)">
                    <option value=""> Make a selection </option>
                </select>
           </fieldset>
        </form>
    </body>
</html>

首先,我将这些代码粘贴到记事本中并将其保存为practice.php . 上传到我的wordpress主题目录 . 键入http://www.site.com/practice.php显示'page not found'所以我去了wordpress仪表板并创建了一个新页面 - >分配了名为'practice'的模板 . 再次键入http://www.site.com/practice.php,它的工作原理 .

<?php  

    $choice = $_GET['choice'];
    $xml = "<?xml version='1.0' ?><options>"; 

    global $wpdb; 

    $query = "SELECT * FROM zipcode WHERE STATE = '$choice'";
    $result = @mysql_query($query);
    $num = @mysql_num_rows($result);
    if ($result && $num > 0)
        {
          while ($row = mysql_fetch_array($result,MYSQL_ASSOC))
            {
               $xml .= "<optionText>" . $row['CITY'] . "</optionText><optionVal>" . $row['CITY'] . "</optionVal>";
            }
        }
    $xml .= "</options>";
    @mysql_free_result($result);
    @mysql_close();
    header("Content-Type: text/xml");
    echo $xml; 

?>

好的,接下来,我创建了一个包含上述代码的页面,并将其命名为updateGroup.php . 将其上传到wordpress主题目录 . 测试了我的代码......我无法让它工作! :(我需要帮助 . 我应该为我的参考页面添加get_header和get_footer吗?或者我需要在wordpress中配置一些东西来识别我的ajax?