Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 下拉菜单填充ajax_Jquery_Select_Drop Down Menu_Populate - Fatal编程技术网

Jquery 下拉菜单填充ajax

Jquery 下拉菜单填充ajax,jquery,select,drop-down-menu,populate,Jquery,Select,Drop Down Menu,Populate,我有以下问题:当我从下拉列表中选择一个元素时,我想通过ajax自动填充另一个下拉列表。其思想是选择类型后不会加载子类别Sub_类型 HTML <select id="type" name="type"> <option value="1">General</option> <option value="2">Test</option> </select> <select id="sub_type" name="sub_

我有以下问题:当我从下拉列表中选择一个元素时,我想通过ajax自动填充另一个下拉列表。其思想是选择类型后不会加载子类别Sub_类型

HTML
<select id="type" name="type">
<option value="1">General</option>
<option value="2">Test</option>
</select>
<select id="sub_type" name="sub_type">
</select>


SCRIPT
    $("#type").change(function(){
    $.getJSON("ajax/add_subcathegory.php",{id: $(this).val(), ajax: 'true'}, function(j){
          var options = '';
          for (var i = 0; i < j.length; i++) {
            options += '<option value="' + j[i].id+ '">' + j[i].name+ '</option>';
          }
        });
    $("#sub_type").html(options);
    });

但是subcategory secont select没有加载。

问题是,在ajax JSON调用之后,您正在将html分配给sub_类型。您应该在ajax回调函数中分配它,如下所示:

$("#type").change(function(){
  $.getJSON("ajax/add_subcathegory.php",{id: $(this).val(), ajax: 'true'}, function(j){
    var options = '';
    for (var i = 0; i < j.length; i++) {
      options += '<option value="' + j[i].id + '">' + j[i].name + '</option>';
    }
    $("#sub_type").html(options);
  });    
});

假设确实调用了Ajax成功函数,将函数代码更改为:

          var $subType = $("#sub_type");
          $subType.empty();
          $.each(j, function () {
            $subType.append($('<option></option>').attr("value", this.id).text(this.name));
          });
你目前的主要问题是:

html函数只被调用一次,因为它在suces函数之外。 Ajax数据中的元素具有键id和名称,而不是optionValue和optionDisplay 更新:


返回的JSON无效。字符串必须用双引号引用,而不是单引号。因此,getJSON调用会以静默方式失败。

不清楚您遇到了什么问题。你能再说一遍你的问题吗?下面的回答正确吗?因为$type.changefunction{$.getJSONajax/add_subcathegory.php,{id:$this.val,ajax:'true'},functionj{var$subType=$sub_type;$.eachj,function{$subType.append$.attrvalue,this.id.texthis.name;};};当你说它不起作用时,我想你的意思是什么也没发生。请尝试调试失败的地方,以便我们能更好地帮助您。查看Firefox的Javascript控制台或浏览器中的等效控制台,查看是否发生Javascript错误。如果没有,请使用Firebug、Fiddler或类似的工具查看网络请求,并显示为Ajax请求和Ajax响应。使用Firebug,您还可以在success函数中设置一个断点,以查看是否调用了它。我使用chrome以便可以看到ajax响应,并且在运行修改后的scriptresponse时没有错误:[{id:0,name:Mark},{id:1,name:Andy},{id:2,name:Richard}]结果:什么都没有发生,即使是这个:[{id:0,name:Mark},{id:1,name:Andy},{id:2,name:Richard}]也不起作用:|。ajax响应中的空格是否计数?是否确定sub_类型可见?请尝试在ajax回调之外调用$'sub_type'.html'Anything',以查看它是否起作用,甚至在onchange函数之外。
          var $subType = $("#sub_type");
          $subType.empty();
          $.each(j, function () {
            $subType.append($('<option></option>').attr("value", this.id).text(this.name));
          });