2013-11-14 30 views
0

我發送一個ajax請求到servlet,它顯示了500個內部服務器錯誤java.lang.NullPointerException。但它成功發佈{「word」:「value」}。如果它通過AJAX調用成功地從客戶端發佈數據,它應該是我的servlet的東西。但無法弄清楚它到底是什麼。java.lang.NullPointerException servlet

AJAX調用

function sendAjax() { 

    // get inputs 
    var word = { 
    word:$('#word').val() 
    } 

    $.ajax({ 
    url: "WordQuest", 
    type: 'POST', 
    dataType: 'json', 
    data: JSON.stringify(word), 
    contentType: 'application/json', 
    mimeType: 'application/json', 

    success: function (data) { 
     $('#shuffled').append(data); 
    }, 
    error:function(data,status,er) { 
     alert("error: "+data+" status: "+status+" er:"+er); 
    } 
}); 

的Servlet

public class WordQuest extends HttpServlet { 

    @Override 
    public void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws IOException, ServletException 
    { 

     String requset_word = request.getParameter("word"); 
     WordShuffle cls = new WordShuffle(); 
     String shuffled_word = cls.shuffle(requset_word); 

     response.setContentType("application/json");  
     PrintWriter out = response.getWriter(); 
     out.print(shuffled_word); 
     out.flush(); 
    } 

    @Override 
    public void doPost(HttpServletRequest request, HttpServletResponse response) 
    throws IOException, ServletException 
    { 
     doGet(request, response); 
    } 
} 

這是堆棧跟蹤

 java.lang.NullPointerException 
    at WordShuffle.str_to_arr(WordShuffle.java:22) 
    at WordShuffle.shuffle(WordShuffle.java:11) 
    at WordQuest.doGet(WordQuest.java:20) 
    at WordQuest.doPost(WordQuest.java:32) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
+0

能否請您發佈全堆棧跟蹤? –

+0

同時顯示請求映射以及堆棧跟蹤 –

+0

發佈了完整堆棧跟蹤 –

回答

0

這是錯誤的

data: JSON.stringify(word), 

你應該只是做

data: word, 
+0

這仍然不會是一個請求參數。 –

+0

仍然是一樣的。 –

0

我相信jQuery.ajax()API狀態的數據必須使用jQuery.param(),也內容類型轉換成一個查詢字符串必須「應用程序/ x-WWW的形式了urlencoded」

款‘將數據發送到服務器’http://api.jquery.com/jQuery.ajax/

它在Resin應用服務器工作對我來說,當我做了以下修改:
1)VAR字= { 字:$( '#字')VAL()}
2)數據:jQuery.param(字),
或發送作爲JSON字符串 2)數據:{一句話:JSON.stringify(字)},

3)的contentType: '應用/的X WWW的形式,進行了urlencoded',

相關問題