无效' in'操作数obj JQUERY - 尝试从JSON获取数据时输入错误

时间:2015-02-03 07:08:20

标签: javascript jquery arrays json jsp

我有一个jsp页面试图从后端拉取数据并将其填充到下拉框中,但是我在'operand 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>

2 个答案:

答案 0 :(得分:1)

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

 var jsonObject = JQuery.parseJSON(responseTM);
$.each(jsonObject , function(key, value) {  

$('<option>').val(key).text(value).appendTo($select); 

});

答案 1 :(得分:0)

如果您要进行ajax调用以获取json响应,请务必明确指定dataType

dataType: 'json'

我猜您正在解析String而不是Object。因为默认情况下dataType为text