2015-07-20 64 views
1

当我运行jsp文件时,我得到[{“USRNM”:“sahar”,“USRPWD”:“password”}]这是正确的,但是当我运行html时,我不能显示数据,当我提醒它时,数据在html标签内,而我试着用[对象对象]的形式警告数据的json文件。请帮助我找出我做错了什么。如何将json对象从jsp返回到angularjs ajax http.get?

的jsp:

Statement stmt = con.createStatement(); 

    ResultSet rs = stmt.executeQuery("select UsrNm,UsrPwd from dbo.tblUsr"); 


    ResultSetMetaData rsMetaData = rs.getMetaData(); 

    int numberOfColumns = rsMetaData.getColumnCount(); 
    JSONArray jsonArray = new JSONArray(); 
    //List <JSONObject> jsonArray = new ArrayList<JSONObject>(); 
     List <String> columnNames = new ArrayList<String>(); 
     for(int i=1;i<=numberOfColumns;i++) { 
     columnNames.add(rsMetaData.getColumnName(i).toUpperCase()); 
    } 
    while(rs.next()) { 
     JSONObject obj = new JSONObject(); 
     for(int i=1;i<=numberOfColumns;i++) { 
      String key = columnNames.get(i - 1); 
      Object value = rs.getObject(i); 
      obj.put(key, value); 
     } 

    jsonArray.add(obj); 
    } 

    //response.setContentType("application/json"); 
     // response.setCharacterEncoding("UTF-8"); 
     response.getWriter().write(jsonArray.toString()); 

HTML:

<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script> 
</head> 
    <body> 

    <div ng-app="myApp" ng-controller="customersCtrl"> 

    <table> 
    <tr ng-repeat="x in names"> 
    <td>{{ x.USRNM}}</td> 
    <td>{{ x.USRPWD}}</td> 
    </tr> 
    </table> 
    </div> 

    <script> 
     var app = angular.module('myApp', []); 
     app.controller('customersCtrl', function($scope, $http) { 
     $http.get("newjsp2.jsp") 
       .success(function (response) { 
       // alert(JSON.stringify(response)); 
       alert(response); 
       $scope.names = response; 
     }).error(function(response,status,headers,config){ 
       alert('cannot find resource'); 
       console.log(response); 
       console.log(status); 
       console.log(headers); 
       console.log(confiq); 
     }); 
    }); 
    </script> 
+0

什么是alert(response);返回给你$ http.get(“newjsp2.jsp”)。success() –

+0

它返回:[{“USRNM”:“sahar”,“USRPWD”:“密码”}] <!DOCTYPE html> jsp页 Sahar

+0

当我使用json文件而不是jsp时,警报返回[object object]所以我猜jsp也应该以对象的形式返回,同时它将数据和html标签返回到一起。但我不知道这是否是问题。 – Sahar

回答

0

尝试使用下面的代码,因为我想返回的数据从你的JSP是字符串格式,所以你需要将其转换为JSON格式在使用Angular JS之前

var app = angular.module('myApp', []); 
app.controller('customersCtrl', function($scope, $http) { 
     $http.get("newjsp2.jsp").success(function (response) { 
      $scope.names = JSON.parse(response); 
     }) 
    .error(function(response,status,headers,config){ 
      alert('cannot find resource'); 
    }); 
    }); 
+0

谢谢,但它不显示任何东西。 – Sahar

0

而不是使用response.getWritter ....我替换了3行并删除HTML标记在jsp文件中,所以现在它能正常工作:)

// response.setContentType("json"); 
     // response.setCharacterEncoding("UTF-8"); 
    //response.getWriter().write(jsonArray.toString()); 

     //These 3 lines 
     PrintWriter out1 = response.getWriter(); 
     out1.print(jsonArray); 
     out1.flush();