2016-04-28 69 views
-1

連接我有在角以下AJAX請願書:不能使用Servlet

$scope.texto = ""; 
$scope.cargarDesdeBackend = function(){ 
    var nombre = "{'nombre':'Benito'}"; 
      $http({ 
     method: 'POST', 
     url: 'http://localhost:8080/Datos', 
     headers: {'Content-Type': 'application/json'}, 
     data: nombre 
    }).success(function (data) 
     { 
     $scope.texto = data; 
     }); 
    }; 

注意到,「VAR農佈雷」行只是出於測試目的!

我送從一個按鈕這份請願書,然後去下面的servlet:

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

     StringBuffer sb = new StringBuffer(); 

    try 
    { 
     BufferedReader reader = request.getReader(); 
     String line = null; 
     while ((line = reader.readLine()) != null) 
     { 
     sb.append(line); 
     } 
    } catch (Exception e) { e.printStackTrace(); } 

    JSONParser parser = new JSONParser(); 
    JSONObject joUser = null; 
    try 
    { 
     joUser = (JSONObject) parser.parse(sb.toString()); 
    } catch (ParseException e) { e.printStackTrace(); } 

    String user = (String) joUser.get("nombre"); 

    response.setContentType("text/html"); 
    PrintWriter out = response.getWriter(); 
    out.write("A new user " + user + " has been created."); 
    out.flush(); 
    out.close(); 
    } 

這檢索以下內容:

enter image description here

在控制檯中,我得到這個錯誤:

enter image description here

我在做什麼錯?

編輯:我有這個servlet映射到web.xml文件中的「/ Datos」。

+0

客戶端成功連接到Servlet但是你的Servlet代碼有問題,所以500狀態返回。不知道如何調試? – Loc

回答

2

你發送的內容是無效的JSON。使用

var nombre = {nombre: 'Benito'}; 

並讓角將這個對象封送到JSON。

也刪除無用的頭,因爲Angular也自己添加它。

請注意,不是逐行讀入正文,而是解析字符串,您應該直接將閱讀器傳遞給JSON解析器。

最後,對於您和我們來說,通過讀取異常的堆棧跟蹤來發現問題會更容易,而不是試圖猜測500錯誤的原因是什麼。

+0

你說得對JSON的東西。我剛剛在淋浴中意識到這件事,順便說一句#showerthoughts。現在檢查它是否正常工作,否則讓我粘貼堆棧跟蹤500錯誤 – Zerok

+0

好吧,這解決了它。似乎有一些錯誤發生在解析JSON時(我猜)寫錯了。現在一切都很好,謝謝! – Zerok