JSON 发布未定义的数据

JSON posting undefined data

本文关键字:数据 未定义 JSON      更新时间:2023-09-26


我在JSON中遇到问题。
不擅长JSON所以我找不到问题所在。
这是JSP代码。

$(document).ready(
    function(){
        window.onload = dept_select;
        $("#sales_dept_id").change(dept_select);
        //alert("$("#sales_sabn_id").val() : "+$("#sales_sabn_id").val());
        //alert("!!");
    }
    );
var dept_select = function(){
var deptId =$("#sales_dept_id").val();
var sabnId =$("#sales_sabn_id").val();
alert(deptId);
alert("sabnId : "+sabnId);
$.ajax({ 
     type:"POST",
     url:"/servlet/servlet.json.JSonSalesSabnRequestServer", 
     data:{"sales_dept_id": deptId
          }, 
     dataType:"JSON", 
     success:function(jsonData){
        alert("jsonData : " +jsonData);
        //alert("jsonDatalength : " +Object.keys(jsonData).length);
         //var aa=JSON.parse(jsonData);
         //alert("aa : " +aa);
        //alert(jsonData[0].sales_sabn_id);
         var str = "<option value=''>SEL</option>"; 
         for(var i = 0; i<jsonData.length;i++){
             if(sabnId == jsonData[i].sales_sabn_id){
                 str = str+"<option value='"+jsonData[i].sales_sabn_id+"' selected >"+ jsonData[i].sales_sabn_name+"</option>"; 
             }else{
                 str = str+"<option value='"+jsonData[i].sales_sabn_id+"'>"+ jsonData[i].sales_sabn_name+"</option>"; 
             }
         } 
         alert("str : " +str);
         $("#sales_sabn_id").empty().append(str); 
      }, 
      error:function(xhr, status, err){
         alert(status+", "+xhr.readyState+" "+err); 
      } 
   });

我可以得到

 'alert("jsonData : " +jsonData);' 


它会发出警报。
但是jsonData.length太大了,jsonData[i].sales_sabn_id都是不确定的。
请帮忙..

这是数据集

try {
        request.setCharacterEncoding("utf-8");
        String sales_dept_id = StringUtil.getNullCheck((String)request.getParameter("sales_dept_id"));
        //FileUtil.writeLog("[JSonSalesSabnRequestServer.java] sales_dept_id = " + sales_dept_id);      
        DataUtil dataUtil = new DataUtil();
        ArrayList objList = dataUtil.getSaleSabn(sales_dept_id);
        for(int i = 0; i < objList.size(); i++){
            JSONObject obj =new JSONObject();
            HashMap map = (HashMap)objList.get(i);
            FileUtil.writeLog("SABN : "+(String)map.get("SABN"));
            FileUtil.writeLog("SABN_NAME : "+(String)map.get("SABN_NAME"));
            obj.put("sales_sabn_id",map.get("SABN"));
            obj.put("sales_sabn_name",map.get("SABN_NAME"));
            objArry.add(obj);
        }
        response.setHeader("Cache-Control", "no-cache");                               
        response.setCharacterEncoding("utf-8");                      
        response.getWriter().write( objArry.toString()  );
        FileUtil.writeLog("objArry.toString() : "+objArry.toString());
    }

你得到的是一个对象数组。因此,如果 JSON 数据是 JSON 字符串,则需要对其进行解析,然后对其进行迭代。

    $.ajax({ 
         type:"POST",
         url:"/servlet/servlet.json.JSonSalesSabnRequestServer", 
         data:{"sales_dept_id": deptId
              }, 
         dataType:"JSON", 
         success:function(jsonData){
            alert("jsonData : " +jsonData);
             var parsedJSON = JSON.parse(jsonData); // only if its a json string
             console.log(parsedJSON.length); // check length of the array
             var str = "<option value=''>SEL</option>"; 
             for(var i = 0; i < parsedJSON.length; i++ ){
                 console.log(parsedJSON[i].sales_sabn_id); // printing the id
                 if(sabnId == parsedJSON[i].sales_sabn_id){
                     str = str+"<option value='"+parsedJSON[i].sales_sabn_id+"' selected >"+ parsedJSON[i].sales_sabn_name+"</option>"; 
                 }else{
                     str = str+"<option value='"+parsedJSON[i].sales_sabn_id+"'>"+ parsedJSON[i].sales_sabn_name+"</option>"; 
                 }
             } 
             alert("str : " +str);
             $("#sales_sabn_id").empty().append(str); 
          }, 
          error:function(xhr, status, err){
             alert(status+", "+xhr.readyState+" "+err); 
          } 
       });