无效的“in”操作数 obj JQUERY - 尝试从 JSON 获取数据时出现类型错误

invalid 'in' operand obj JQUERY - Type Error while trying to fetch data from JSON

本文关键字:数据 获取 JSON 错误 类型 in 操作数 JQUERY obj 无效      更新时间:2023-09-26

我有一个jsp页面,它试图从后端提取数据并将其填充在下拉框中,但是我不断收到这个"无效的'in'操作数obj"错误。

我的代码是

$.get('../Paid_deep_dive',{type:"bodyload",s_date:$start_date,e_date:$end_date},function(responseTM) { 
                var $select = $('#tm'); 
                $select.find('option').remove();
                $.each(responseTM, function(key, value) {  
                $('<option>').val(key).text(value).appendTo($select); 
                });

});

我的 servlet 代码是这样的

  if(type.equals("bodyload"))
{
    try
    {
      prepStmt = con.prepareStatement(dbquery.get_trademark);
      rs=prepStmt.executeQuery();
      while(rs.next())
        {
        json.put(rs.getString(1),rs.getString(2));
        System.out.println(rs.getString(1));
        System.out.println(rs.getString(2));
        }

    String responsetojsp=json.toString(); 
    System.out.println(responsetojsp);
    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write(responsetojsp);
    }
    catch(Exception e)
    {
          logger.error("Error : " + e);
    }
}

当我输出我的 JSON 时,输出是这样的

{"11":"商标2","6":"商标1"}

我的jsp代码

如下
<div id="filter-panel" class="collapse filter-panel">
                <div class="panel panel-default">
                <div class="panel-body">
                    <div class="form-group">
                        <b><font color="#545454" size="2px">START DATE</font></b>
                        <b><font color="#545454" size="2px">END DATE</font></b>
                        <input type="text" id="datepicker1" onchange="loadpage()">-
                        <input type="text" id="datepicker2" onchange="loadpage()">       
                        <label class="filter-col" style="margin-right:0;" for="pref-orderby">Trademark</label>
                        <select id="tm">
                            <option value="trademarks">Trademark 1</option>
                        </select>
                        <label class="filter-col" style="margin-right:0;" for="pref-orderby">Brand</label>
                        <select id="br" class="form-control">
                            <option value="brands">Brand 1</option>
                        </select>
                        <label class="filter-col" style="margin-right:0;" for="pref-orderby">Campaign</label>
                        <select id="camp" class="form-control">
                            <option values="camps">Campaign 1</option>
                        </select>
                        <button type="submit" class="btn btn-default filter-col">
                            <span class="glyphicon glyphicon-record"></span> Submit
                        </button>  
                    </div> <!-- form group [order by] -->
                </div>

在将响应文本保存到变量之前解析响应文本。然后将变量传递给 $.each

 var jsonObject = JQuery.parseJSON(responseTM);
$.each(jsonObject , function(key, value) {  
$('<option>').val(key).text(value).appendTo($select); 
});

如果要进行 ajax 调用以获取json响应,请确保显式指定dataType

dataType: 'json'

我猜您正在解析String而不是Object.因为默认情况下数据类型是text