2015-07-10 3 views
0

В принципе у меня есть HTML-файл, в котором я создаю объект JSON:Как получить объект JSON в сервлет?

function CreateJson() { 
     var tableObj = []; 

     var loopCounter = 0; 
     var inputValues = []; 

     var table = document.getElementById('inputTable'); 
     for (var r = 0, n = table.rows.length; r < n; r++) { 
      for (var c = 0, m = table.rows[r].cells.length; c < m; c++) { 
       loopCounter++; 

       inputValues.push(table.rows[r].cells[c].firstChild.value); 

       if (loopCounter == 3) { 
        tableObj.push({ 
         model : inputValues[0], 
         colour : inputValues[1], 
         year : inputValues[2] 
        }); 
        loopCounter = 0; 
        inputValues = []; 
       } 
      } 
     } 
     $.ajax({ 
      type : 'POST', 
      dataType : 'json', 
      data: { tableObj : JSON.stringify(jsondata)}, 
      url : 'ServletUrl', 
      timeout : 5000, 
      success : function(data, textStatus) { 
       // whatever 
      }, 
      error : function(xhr, textStatus, errorThrown) { 
       // whatever 
      } 
     }); 
    } 

У меня есть форма с action на мой сервлете, и когда я отправить форму, код JavaScript выше запускается на выполнение. Как получить и проанализировать объект JSON внутри моего сервлета? Объектом JSON является tableObj.

EDIT: Я отредактировал мой CreateJson функции:

и в моем сервлета у меня есть:

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

     Object json = request.getParameter("tableObj"); 
     System.out.println(json); 

В журналах печатаемых нуль.

+0

Я не понимаю ваши вопрос. TableObj - объект json? Вы хотите получить его в сервлете? Вы его отправляете? –

+0

как отправить tableObj на сервлет. Я хочу работать с tableObj внутри моего сервлета –

+0

Вы пробовали отправить его на сервлет, используя, например, jquery? http://api.jquery.com/jquery.post/ –

ответ

0

См вы используете POST в вашем Java Script

$.ajax({ 
      type : 'POST', 
      dataType : 'json', 
      data: { tableObj : JSON.stringify(jsondata)}, 
      url : 'ServletUrl', 
      timeout : 5000, 
      success : function(data, textStatus) { 
       // whatever 
      }, 
      error : function(xhr, textStatus, errorThrown) { 
       // whatever 
      } 
     }); 

но вы не используете один и тот же глагол (doPost) в сервлет, пожалуйста, измените

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

в

public void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws IOException { 
+0

, вы не можете изменить doGet() на doPost() в реализации сервлета. У вас должны быть объявлены оба метода. –

+0

что я пытался сказать, что hi читает значение в doGet, вместо этого он должен читать его в doPost, и вы правы, оба метода принадлежат одному интерфейсу ... –

+0

Я изменил его, чтобы ввести: 'GET ', но моя функция doGet по-прежнему возвращает null. –