我已经坚持了两周的代码 . 我想要一个包含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?