2014-05-09 71 views
0

我試圖發送JSON數據使用jQuery的AJAX調用servlet中...以下是代碼從JavaScript發送JSON數據到Java

$(function() { 
    $("#mybutton").click(function() { 
      var testdata = JSON.stringify({ 
       'name': 'name', 
       'desc':'test' 
      }); 


     $.ajax({ 
      type: "POST",      
      url:"/Alert/ReportServlet", 
      data: testdata,  
      dataType: "json", 
      contentType: "application/json", 
      success : function(data){    
       console.log("success:", data); 
      }, 
      error : function(data) { 
       console.log("error:", data); 
      } 

    }); 
    }); 
    }); 

和servlet代碼是

public class ReportingServlet extends HttpServlet { 

    private static final long serialVersionUID = 1L; 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException { 
      System.out.println("The data is" + request.getParameter("testdata"));  
     }  
} 

該值來作爲空...請建議

+0

可能重複[在Java Servlet中通過jquery ajax發送參數](http://stackoverflow.com/questions/19374345/get-parameter-sent-via-jquery-ajax-in-java-servlet) – Hirak

+0

向我們展示'web.xml '用於servlet映射。在你的代碼中,url是'/ Alert/ReportServlet',而服務器類名是'ReportingServlet'。 –

+0

請使用request.getQueryString(),因爲您發送了「{'name':'name','desc':'test'}」到後端,沒有任何參數叫testdata –

回答

0

在servlet的嘗試

request.getParameter("name"); 
request.getParameter("dest"); 
0

在你的Ajax調用做這樣的事情

$(function() { 
    $("#mybutton").click(function() { 
      var testdata = JSON.stringify({ 
       'name': 'name', 
       'desc':'test' 
      }); 


     $.ajax({ 
      type: "POST",      
      url:"/Alert/ReportServlet", 
      data: { d : testdata },  
      dataType: "json", 
      contentType: "application/json", 
      success : function(data){    
       console.log("success:", data); 
      }, 
      error : function(data) { 
       console.log("error:", data); 
      } 

    }); 
    }); 
    }); 

然後在java中嘗試:

request.getParameter("d"); 

這一點,你可以用一些庫(比如傑克遜)到d轉換成HashMap中