JSON发布未定义的数据

时间:2015-06-16 05:43:59

标签: javascript jquery json


我在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());

    }

1 个答案:

答案 0 :(得分:0)

你得到的是一系列物体。因此,如果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); 
          } 
       });