自己做个小例子,怎么前台页面显示不出来数据,好像也进不了后台的servlet,请教什么原因?
后台servlet代码:
public class DataServlet extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
response.setContentType("application/json");
response.setCharacterEncoding("GBK");
request.setCharacterEncoding("GBK");
PrintWriter out = response.getWriter();
out.write("{\"provincelist\":[{\"id\":1,\"province\":\"河南省\"},{\"id\":2,\"province\":\"河北省\"},{\"id\":3,\"province\":\"山西省\"},{\"id\":4,\"province\":\"山东省\"},{\"id\":5,\"province\":\"湖南省\"},{\"id\":6,\"province\":\"湖北省\"},{\"id\":7,\"province\":\"四川省\"},{\"id\":8,\"province\":\"辽宁省\"},{\"id\":9,\"province\":\"吉林省\"},{\"id\":10,\"province\":\"黑龙江省\"},{\"id\":11,\"province\":\"广东省\"},{\"id\":12,\"province\":\"浙江省\"},{\"id\":13,\"province\":\"福建省\"},{\"id\":14,\"province\":\"甘肃省\"},{\"id\":15,\"province\":\"江西省\"},{\"id\":16,\"province\":\"陕西省\"},{\"id\":17,\"province\":\"海南省\"},{\"id\":18,\"province\":\"江苏省\"},{\"id\":19,\"province\":\"安徽省\"},{\"id\":20,\"province\":\"云南省\"},{\"id\":21,\"province\":\"贵州省\"},{\"id\":22,\"province\":\"天津市\"},{\"id\":23,\"province\":\"北京市\"},{\"id\":24,\"province\":\"上海市\"},{\"id\":25,\"province\":\"重庆市\"},{\"id\":26,\"province\":\"新疆维吾尔族自治区\"},{\"id\":27,\"province\":\"内蒙古自治区\"},{\"id\":28,\"province\":\"西藏自治区\"},{\"id\":29,\"province\":\"广西壮族自治区\"},{\"id\":30,\"province\":\"宁夏回族自治区\"},{\"id\":31,\"province\":\"香港特别行政区\"},{\"id\":32,\"province\":\"澳门特别行政区\"}]}");
out.flush();
out.close();

}

public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
     doGet(request, response);
}
}
前台jsp代码:
Ext.onReady(function(){
var store=new Ext.data.JsonStore({
autoLoad:true,
url:"/dataServlet.do", 
root:"provincelist",
fields:["id","province"]
});
//定义列
var colM=new Ext.grid.ColumnModel([{header:"序号",dataIndex:"id"},
{header:"省市",dataIndex:"province"}]);

//数据源定义,创建表格
var grid = new Ext.grid.GridPanel({

renderTo:Ext.getBody(),

title:"表格测试",

height:200,

width:600, 

cm:colM,

store:store

}); });web.xml中配置:
<servlet>
    <servlet-name>DataServlet</servlet-name>
    <servlet-class>CPlib.ajax.DataServlet</servlet-class>
 </servlet>
<servlet-mapping>
    <servlet-name>DataServlet</servlet-name>
    <url-pattern>/dataServlet.do</url-pattern>
 </servlet-mapping>

解决方案 »

  1.   

    你的xml配置写的不对吧
    CPlib.ajax这个包在哪?
      

  2.   

    如果GridPanel和其列都出来了数据没出来,一般是封装JSON数据的时候错误,你仔细看看你的JSON数据。
      

  3.   

    问题找出来了,不是web.xml中配置的问题
    Ext.onReady(function(){ 
    var store=new Ext.data.JsonStore({
    autoLoad:true,
    url:"/dataServlet.do",  
    method:'POST',root:"provincelist",
    fields:["id","province"]
    });
     加上method:'post', 就行了
      

  4.   

    List list = new ArrayList();
    list.add("first");
    list.add("second");
    JSONArray jsonArray = JSONArray.fromObject(list);   
    System.out.println(jsonArray);这段代码为什么到倒数第二步的时候就走不下去了,也不抛出任何的Exception,所有关于JSON-lib的包都导入了,困惑中,忘高手指教啊!
      

  5.   


    问题找出来了,不是web.xml中配置的问题
    Ext.onReady(function(){  
    var store=new Ext.data.JsonStore({
    autoLoad:true,
    url:"/dataServlet.do",   
    method:'POST',
    root:"provincelist",
    fields:["id","province"]
    });
    加上method:'post', 就行了,
    嘿嘿,还有个问题啊
    List list = new ArrayList();
    list.add("first");
    list.add("second");
    JSONArray jsonArray = JSONArray.fromObject(list);   
    System.out.println(jsonArray);这段代码为什么到倒数第二步的时候就走不下去了,也不抛出任何的Exception,所有关于JSON-lib的包都导入了,困惑中,忘高手指教呀
      

  6.   

    EXT 请求数据的原理就是AJAX ~~~
    所以 可以而把URL 直接去放在浏览器里走~~看会不会进入 ACTION ~~
      

  7.   

    如果仅仅是走到倒数第二部的时候走不下去,可以单独把JSONArray相关类拿出来测试,按照下面的例子:
    http://www.blogjava.net/xcp/archive/2011/06/16/237730.html