Javascript PHP Ajax调用以清除和填充下拉菜单

Javascript PHP Ajax调用以清除和填充下拉菜单,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,您好,我在网页上有一个表单,例如包含一个汽车列表,如下所示: <select name = "car" id="Cars" onchange="showForm()"> <option value="0">Toyota</option> <option value="1">Audi</option> <option value="2">Suzuki&l

您好,我在网页上有一个表单,例如包含一个汽车列表,如下所示:

 <select name = "car" id="Cars" onchange="showForm()">
            <option value="0">Toyota</option>
            <option value="1">Audi</option>
            <option value="2">Suzuki</option>
</select>
[models] => Array ( [0] => Array ( [modelName] => R8 ) [1] => Array ( [modelName] => A6 hatchback ) ) 

/project/main/getModels
中,用
迭代数组以形成代码,然后使用jquery
.html()替换html即可

范例

如果ajax正在返回,请说

<option value="0">R8</option>
<option value="1">Quattro</option>
<option value="2">A6 hatchback</option>

/project/main/getModels
中,用
迭代数组以形成代码,然后使用jquery
.html()替换html即可

范例

如果ajax正在返回,请说

<option value="0">R8</option>
<option value="1">Quattro</option>
<option value="2">A6 hatchback</option>

首先,您需要更新您的select like

<select name = "car" id="Cars" onchange="getModels(this.value)">
        <option value="0">Toyota</option>
        <option value="1">Audi</option>
        <option value="2">Suzuki</option>

丰田
奥迪
铃木

和模型

<select name = "model" id="models" onchange="showForm()">

</select>




<script type="text/javascript">

    function getModels(v){
       // var carTypeId = $(obj).attr('value');

        $.ajax({
            type: "POST",
            url: "/project/main/getModels",
            data: { 'carTypeId': v  },
            dataType:'json',
            success: function(msg){
                html = '';
              if(msg.model){
                for(i=0;i<msg.model.length;i++){
                   html += '<option value="'+msg.model[i][model_id]+'">'+ msg.model[i][model_name] +'</option>';
                }

               $('select[\'name=model\']').html(html);
             }

            }
        });
    }
$('select[name=\'car\']').trigger('change');
</script>

函数模型(v){
//var carTypeId=$(obj).attr('value');
$.ajax({
类型:“POST”,
url:“/project/main/getModels”,
数据:{'carTypeId':v},
数据类型:'json',
成功:功能(msg){
html='';
if(msg.model){
对于(i=0;i

首先,您需要更新您的选择

<select name = "car" id="Cars" onchange="getModels(this.value)">
        <option value="0">Toyota</option>
        <option value="1">Audi</option>
        <option value="2">Suzuki</option>

丰田
奥迪
铃木

和模型

<select name = "model" id="models" onchange="showForm()">

</select>




<script type="text/javascript">

    function getModels(v){
       // var carTypeId = $(obj).attr('value');

        $.ajax({
            type: "POST",
            url: "/project/main/getModels",
            data: { 'carTypeId': v  },
            dataType:'json',
            success: function(msg){
                html = '';
              if(msg.model){
                for(i=0;i<msg.model.length;i++){
                   html += '<option value="'+msg.model[i][model_id]+'">'+ msg.model[i][model_name] +'</option>';
                }

               $('select[\'name=model\']').html(html);
             }

            }
        });
    }
$('select[name=\'car\']').trigger('change');
</script>

函数模型(v){
//var carTypeId=$(obj).attr('value');
$.ajax({
类型:“POST”,
url:“/project/main/getModels”,
数据:{'carTypeId':v},
数据类型:'json',
成功:功能(msg){
html='';
if(msg.model){
对于(i=0;i

以这种格式返回php结果

<option value="0">R8</option>
<option value="1">Quattro</option>
<option value="2">A6 hatchback</option>

未测试。希望这有帮助。

以此格式返回php结果

<option value="0">R8</option>
<option value="1">Quattro</option>
<option value="2">A6 hatchback</option>


未测试。希望这有帮助。

1.使您的API restful[也就是说,没有
POST
getModels
路径,而是
GET
/models
;2.通过
json\u encode
返回一个json数组,然后在jQuery中对其进行迭代,并将
s
附加到所需的
标记。我可以举个例子吗?附加模型会删除已经被选中的模型吗模型中的附加选项选择?附加不会[根据定义]删除任何内容。请自己尝试,您现在拥有搜索google的所有关键字:))1.使您的API保持restful状态[也就是说,没有
POST
getModels
路径,而是
GET
/models
;2.通过
json\u encode
返回一个json数组,然后在jQuery中对其进行迭代,并将
s
附加到所需的
标记。我可以举个例子吗?附加模型会删除已经被选中的模型吗模型中的选项选择?追加不会删除任何东西[根据定义]。你自己试试,你现在有搜索谷歌的所有关键字:))嗨,我知道这听起来很愚蠢-但我对网络编程完全不熟悉如何从php端一个接一个地返回每个选项这是我的数组中的一个foreach回音吗“option value='x'>”。model['modelName']。您不需要逐个返回。在foreach内部,您必须完整地构建一个选项。.foreach($array as$row){$str.=“modelName”}在php文件中。然后简单地回显$str?嗨,我知道这听起来很愚蠢-但我对web编程完全陌生。我如何从php端一个接一个地返回每个选项?这是我数组中回显“option value='x'>”的foreach。model['modelName']。您不需要逐个返回。在foreach内部,您必须完整地构建一个选项。..foreach($array as$row){$str.=“Modelname”}在php文件中。然后简单地回显$str?谢谢你的建议-但是我将以什么格式返回msg.model?它是json编码的数据吗?谢谢你让我更有意义-我将在测试后尝试此方法并将您标记为正确谢谢!OP希望附加到模型下拉列表。^true-这是php方面如何操作的最佳示例你的下拉列表值不是被替换了,而是被追加了吗?你提到你想在现有值中追加,我想是吧?谢谢你的建议-但是我应该以什么格式返回msg.model?是json编码的数据吗?谢谢,这更有意义-我会在测试后尝试并将你标记为正确谢谢!OP想追加到模型下拉列表。^true-这是PHP端操作的最佳示例,但下拉列表值不是被替换而不是追加吗?你提到过你想在现有值中追加吗?
$.ajax({
    type: "POST",
    url: "/project/main/getModels",
    data: { 'carTypeId': carTypeId  },
    success: function(msg){

    $('#models').html('');
    $('#models').html(msg);

    }
});