Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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将数据附加到选择框_Jquery - Fatal编程技术网

jquery将数据附加到选择框

jquery将数据附加到选择框,jquery,Jquery,我正在进行一个ajax调用,以返回一个状态列表,如下所示: "[["Alabama",1],["Alaska",2],["Arizona",3],["Arkansas",4],["California",5],["Colorado",6],["Connecticut",7],["Delaware",8],["Florida",9],["Georgia",10],["Guam",52],["Hawaii",11],["Idaho",12],["Illinois",13],["Indiana",14

我正在进行一个ajax调用,以返回一个状态列表,如下所示:

"[["Alabama",1],["Alaska",2],["Arizona",3],["Arkansas",4],["California",5],["Colorado",6],["Connecticut",7],["Delaware",8],["Florida",9],["Georgia",10],["Guam",52],["Hawaii",11],["Idaho",12],["Illinois",13],["Indiana",14],["Iowa",15],["Kansas",16],["Kentucky",17],["Louisiana",18],["Maine",19],["Maryland",20],["Massachusetts",21],["Michigan",22],["Minnesota",23],["Mississippi",24],["Missouri",25],["Montana",26],["Nebraska",27],["Nevada",28],["New Hampshire",29],["New Jersey",30],["New Mexico",31],["New York",32],["North Carolina",33],["North Dakota",34],["Northern Mariana Islands",57],["Ohio",35],["Oklahoma",36],["Oregon",37],["Pennsylvania",38],["Philippine Islands",56],["Puerto Rico",53],["Rhode Island",39],["South Carolina",40],["South Dakota",41],["Tennessee",42],["Texas",43],["Utah",44],["Vermont",45],["Virgin Islands",54],["Virginia",46],["Washington",47],["Washington DC",48],["West Virginia",49],["Wisconsin",50],["Wyoming",51]]"
如何将其附加到下拉框中? e、 g.像这样:

<option value="2" style="display: block;">Alaska</option>
编辑:一些更完整的代码 这里是JS函数,选中的_项是国家选择框,所以我想收回该国家的所有州或地区:

function filterTerritory(selected_item) {
    var country_id =  selected_item.val();
    $.ajax({
        url: '/addresses/update_states',
        data: {
            country_id: country_id
        },
        dataType: "script",
        success: ( function (data) {
            selected_item.closest('.address-table').find('.state_select option:gt(0)').remove().append(data);
        })
    });
}
我的rails控制器:

  def update_states
     @states= get_states_list(params[:country_id]).pluck(:name, :id)    
     respond_to do |format|
       format.json { render json: @states.as_json }
     end
  end

您不能只是将数据附加到该格式,并期望jQuery知道如何创建选项元素。首先,使用JSON.parsedata获取JSON格式的数据,并使用.each创建option元素。

JQuery不会从数组或JSON字符串生成option标记,相反,您需要使用数组以html字符串或jQuery对象的形式生成元素,然后才能以其他方式追加该元素—JSON字符串将被追加

此外,如果您试图将元素附加到已删除的选项(该选项不会产生任何效果),则需要返回到选择标记选择器并附加生成的内容

var数据=“[[阿拉巴马州,1],[阿拉斯加,2],[亚利桑那州,3],[阿肯色州,4],[加利福尼亚州,5],[科罗拉多州,6],[康涅狄格州,7],[特拉华州,8],[佛罗里达州,9],[乔治亚州,10],[关岛,52],[夏威夷,11],[爱达荷州,12],[伊利诺斯州,13],[印第安纳州,14],[爱荷华州,15],[堪萨斯州,16],[肯塔基州,17],[路易斯安那州,18],[缅因州,19],[马里兰州,20],[马萨诸塞州,21],[密歇根州,22],[明尼苏达州,23],[密西西比,[密苏里州,25],[蒙大拿州,26],[内布拉斯加州,27],[内华达州,28],[新罕布什尔州,29],[新泽西州,30],[新墨西哥州,31],[纽约州,32],[北卡罗莱纳州,33],[北达科他州,34],[北马里亚纳群岛,57],[俄亥俄州,35],[俄克拉荷马州,36],[俄勒冈州,37],[宾夕法尼亚州,38],[菲律宾群岛,56],[波多黎各,53],[罗得岛州,39],[南卡罗来纳州,40],[南达科他州,41],[田纳西州,42],[德克萨斯州,43],[犹他州,44],[佛蒙特州,45],[维尔京群岛,54],[弗吉尼亚州,46],[华盛顿特区,47],[华盛顿特区,48],[西弗吉尼亚州,49],[威斯康星州,50],[怀俄明州,51]; $'select'//get select .find'option:gt0'//查找要删除的选项 .删除//删除选项 .end//返回上一个选择器 追加 JSON.parsedata//解析JSON .mapfunctionv{//生成要追加的jQuery对象数组 返回$,{//使用数组元素创建选项 text:v[0],//设置文本 值:v[1]//设置值 }; }; aaaa aaaa aaaa
您应该首先使用JSON.parse解析JSON,然后附加到select

var数据=“[[阿拉巴马州,1],[阿拉斯加,2],[亚利桑那州,3],[阿肯色州,4],[加利福尼亚州,5],[科罗拉多州,6],[康涅狄格州,7],[特拉华州,8],[佛罗里达州,9],[乔治亚州,10],[关岛,52],[夏威夷,11],[爱达荷州,12],[伊利诺斯州,13],[印第安纳州,14],[爱荷华州,15],[堪萨斯州,16],[肯塔基州,17],[路易斯安那州,18],[缅因州,19],[马里兰州,20],[马萨诸塞州,21],[密歇根州,22],[明尼苏达州,23],[密西西比,[密苏里州,25],[蒙大拿州,26],[内布拉斯加州,27],[内华达州,28],[新罕布什尔州,29],[新泽西州,30],[新墨西哥州,31],[纽约州,32],[北卡罗莱纳州,33],[北达科他州,34],[北马里亚纳群岛,57],[俄亥俄州,35],[俄克拉荷马州,36],[俄勒冈州,37],[宾夕法尼亚州,38],[菲律宾群岛,56],[波多黎各,53],[罗得岛州,39],[南卡罗来纳州,40],[南达科他州,41],[田纳西州,42],[德克萨斯州,43],[犹他州,44],[佛蒙特州,45],[维尔京群岛,54],[弗吉尼亚州,46],[华盛顿特区,47],[华盛顿特区,48],[西弗吉尼亚州,49],[威斯康星州,50],[怀俄明州,51]; var期权=; JSON.parsedata.ForEachFunction{ 选项+=+e[0]+; } $'state\u select'.empty.appendoptions; A.
你可以这样做:像这样:


这是我OP中包含所有状态的第一行,valuesLooks无效数据,它不是一个有效数组。这不完全是解决方案,但您也需要解析数据?JSON.parsedata,然后迭代创建选项,然后将该选项附加到ruby on rails控制器操作的下拉列表中,它应该是rendering as json:render json:@states.as_jsonI喜欢在大多数答案中使用map和reduce的方式。但在这里,我对文本和值的解释方式感到困惑。@SandeepNayak:return$,{//create option using数组元素text:v[0],//set text value:v[1]//set value};我得到:未捕获类型错误:data.map不是function@user3437721:如果它是一个字符串,那么您需要解析它。解析它是什么意思?我应该解析什么?Thanks我的代码似乎不喜欢rocket=>,表达式expected?
  def update_states
     @states= get_states_list(params[:country_id]).pluck(:name, :id)    
     respond_to do |format|
       format.json { render json: @states.as_json }
     end
  end
var out='';
for(i in data){
    out+="<option value="+data[i][1]+">"+data[i][0]+"</option>";
}
$('select').append(out)