AJAX脚本中未捕获的ReferenceError

时间:2011-09-29 12:12:51

标签: php ajax

首先......在过去的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

1 个答案:

答案 0 :(得分:0)

在你的html模型部分,你应该把你的php标签放在''之间。例如:

onchange="getSub('<? php echo $year ?>','<?php echo $make ?>',this.value)">