首先......在过去的3个晚上我一直在努力解决这个问题......我看过与我有类似主题的帖子,但没有找到帮助我的答案......我对AJAX& amp;有点新鲜JS但不是网络编程新手......
我有一个标准的汽车选择列表...一个选择列表提供另一个......
选择年份,它会显示选择生产列表,选择生成并获取模型选择列表选择模型和放大器。得到一个修剪样式的选择列表...非常常见的东西真的......
我有一个脚本可以完成所有这些(在网上找到它)覆盖了一年。制造与发展模型部分......我不得不添加额外的位来进行修剪...一切正常,直到我得到修剪部分(我的部分:))。
当我选择模型(然后应该给我一个合适的修剪列表)时,我在Chrome错误控制台中收到以下错误:
“未捕获的ReferenceError:未定义雪佛兰 (匿名功能) 平变化“
与我读过的其他类似主题相比,让我感到困惑的是,“chevrolet”是Make参数 - 不是函数......
我的剧本是(你可能认出来了......):
<script language="javascript" type="text/javascript">
var xmlhttp=false;
try{
xmlhttp=new XMLHttpRequest();
}
catch(e) {
try{
xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e1){
xmlhttp=false;
}
}
}
return xmlhttp;
}
function getMake(yearId) {
var strURL="/vehicles/getmake/"+yearId+"/";
var req = getXMLHTTP();
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
document.getElementById('makediv').innerHTML=req.responseText;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", strURL, true);
req.send(null);
}
}
function getModel(yearId,makeId) {
var strURL="/vehicles/getmodel/"+yearId+"/"+makeId+"/";
var req = getXMLHTTP();
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
document.getElementById('modeldiv').innerHTML=req.responseText;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", strURL, true);
req.send(null);
}
}
function getSub(yearId,makeId,modelId) {
var strURL="/vehicles/gettrim/"+yearId+"/"+makeId+"/"+modelId+"/";
var req = getXMLHTTP();
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
document.getElementById('trimdiv').innerHTML=req.responseText;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", strURL, true);
req.send(null);
}
}
每个函数页面中的参考html分别为: 为了制作:
<label for="make" class="select">Make_ch:</label>
<select placeholder="Select a Year First" name="make" id="make" autocapitalize="off" autocorrect="off" autocomplete="off"
onchange="getModel(<?php echo $year ?>,this.value)">
<?php foreach($vehicle_make->result() as $row)
{
echo '<option value = "'.$row->model_make_id.'">'.$row->model_make_id.'</option>';
}
?>
为模型:
<label for="model" class="select">Model_ch:</label>
<select placeholder="Select a Make First" name="model" id="model" autocapitalize="off" autocorrect="off" autocomplete="off"
onchange="getSub(<?php echo $year ?>,<?php echo $make ?>,this.value)">
<?php foreach($vehicle_model->result() as $row)
{
echo '<option value = "'.$row->model_name.'">'.$row->model_name.'</option>';
}
?>
修剪
:
<label for="trim" class="select">Trim_ch:</label>
<select placeholder="Select a Model First" name="trim" id="trim" autocapitalize="off" autocorrect="off" autocomplete="off">
<?php foreach($vehicle_trim->result() as $row)
{
echo '<option value = "'.$row->model_trim.'">'.$row->model_trim.'</option>';
}
?>
正如我所说......年份,Make,Model部分都正常工作......我已经确认Trim选择列表会显示它应该收到的所有参数...
有人找到我遗失的任何东西吗?
提前致谢...... Russ
答案 0 :(得分:0)
在你的html模型部分,你应该把你的php标签放在''之间。例如:
onchange="getSub('<? php echo $year ?>','<?php echo $make ?>',this.value)">