2015-07-20 61 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();