2013-06-17 2 views
1

Как я могу получить массив json, возвращенный из моего сервлета в моем запросе ajax, чтобы поместить его в сетку ext js? Примечание: мое приложение всегда возвращает пустую сетку! Это мой запрос Ajax:json array in Ext js Grid

Ext.Ajax.request({ 
    url: 'src/AccessServlet.java', 
    method:'POST', 
    success: function (result, request) { 
    Ext.MessageBox.alert('Success', 'Data return from the server: '+ result.responseText); 
    myData =Ext.util.JSON.decode(result.responseText); 
    console.log(myData); 
    store.loadData(myData); 
    }, 
    failure: function (result, request) {  
    Ext.MessageBox.alert('Failed', result.responseText); 
    } 
}); 
var store = new Ext.data.ArrayStore({ 
    fields: [{name: 'name'}, 
     {name: 'id'},] 
}); 
var grid = new Ext.grid.GridPanel({ 
    store: store, 
    columns: [ {header : 'Name', 
      width : 60}, 
     { header : 'id', 
      width : 60},], 
     height: 200}); 
     grid.render('grid'); 
     }); 

и это мой сервлет:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
     { 
     response.setContentType("application/json"); 
    System.out.println("Right!!You are in servlet now !!!!! "); 
    PrintWriter out = response.getWriter(); 
    // Output stream to STDOUT 
    JSONObject myObject = new JSONObject(); 
    myObject.put("name","xx"); 
    myObject.put("id","123"); 
    System.out.println(myObject); 
    JSONObject myRecord = new JSONObject(); 
    myRecord.put("name","yy"); 
    myRecord.put("id","12"); 
    System.out.println(myRecord); 
    JSONArray myRecords = new JSONArray(); 
    myRecords.add(myObject); 
    myRecords.add(myRecord); 
    System.out.println(myRecords); 
    } 

мой web.xml Файл:

<?xml version="1.0" encoding="UTF-8"?> 
     <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web- app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>ajaxWithServlet</display-name> 
    <welcome-file-list> 
<welcome-file>ajax.html</welcome-file> 
</welcome-file-list> 
<servlet> 
    <description></description> 
<display-name>AccessServlet</display-name> 
<servlet-name>AccessServlet</servlet-name> 
<servlet-class>AccessServlet</servlet-class> 
<load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
<servlet-name>AccessServlet</servlet-name> 
<url-pattern>/AccessServlet</url-pattern> 
</servlet-mapping> 
</web-app> 

Помогите мне пожалуйста!

+0

Вы определили сетку? Является ли 'store' настроенным для этой сетки? Что не работает для вас? Потому что в основном то, что вы здесь делаете, должно работать. –

+0

Да, я определил свою сетку, и хранилище настроено для моей сетки! Кроме того, мой сервлет возвращает json-массив !, но сетка всегда пуста! – user2490301

+0

Что мне делать? Мне нужна ваша помощь – user2490301

ответ

0

Я думаю, что ваша проблема - это URL вашего JsonDataStore. Вы не можете получить доступ к своему сервлету через структуру каталогов. Просто это не сработает. Укажите URL-адрес сервера приложений вашего сервлета для атрибута url в DataStore. Вы должны найти это полезным.

Can't get jSon dataStore into ExtJS (Sencha Touch) chart: displays error "cannot read property 'length' of undefined"

Ok. В вашем запросе ajax вы указали url как «url: src/AccessServlet.java». Это вы пытаетесь напрямую получить доступ к исходному файлу. Это не сработает, потому что любой исходный файл Java не может быть запущен, если не скомпилирован. Сервлеты одинаковы. Кроме того, вам необходимо сопоставить ваш сервлет в файле web.xml. Когда веб-приложение будет развернуто, сервлет будет доступен через URL-адрес, отображаемый в web.xml. Используйте этот URL-адрес в запросе ajax. Другое дело, что в вашем сервлете вам нужно написать объект json для ответа. Для этого используйте экземпляр PrintWriter.

http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html

+0

Мне жаль, но я не понял, что вы имеете в виду. Не могли бы вы объяснить, пожалуйста ?! – user2490301

+0

Я с самого начала сопоставил свой сервлет в своем web.xml, и я написал свой json-объект для ответа, как вы сказали, используя printWriter, но по-прежнему имеет ту же проблему. – user2490301

+0

Пожалуйста, напишите свой web.xml – sithum

Смежные вопросы