View Full Version : Cant call a servlet from ExtJs controller

Jeet Chatterjee
8 May 2013, 5:40 AM
i have a controller in extjs application, from where i have to call a servlet. But i am unable to call that servlet from controller here is my controller code ..... when i am running the application always failure part is showing "server-side failure with status code" this is the problem:

Ext.define('Gamma.controller.ControlFile', {extend : 'Ext.app.Controller',//define the storesstores : ['BarColumn', 'RadarView', 'VoiceCallStore', 'SMSCallStore', 'MMSCallStore', 'GPRSUsageStore'],//define the models models : ['BarCol', 'radar', 'VoiceCallModel', 'SMSCallModel', 'MMSCallModel', 'GPRSUsageModel'],//define the viewsviews : ['BarColumnChart', 'LineChart', 'RadarChart', 'VoicePie', 'SMSPie', 'MMSPie', 'GPRSPie'],initializedEvents: false,init: function() { this.control({ '#barColumnChart': { afterlayout: this.afterChartLayout } });},afterChartLayout: function(){ var me=this; if(this.initializedEvents==true) return; this.initializedEvents=true; Ext.getCmp('barColumnChart').series.items[0].on('itemmousedown',function(obj){ // alert(obj.storeItem.data['source']+ ' &' + obj.storeItem.data['count']); var barData=obj.storeItem.data['source']+ ' &' + obj.storeItem.data['count']; me.dataBaseCall(obj.storeItem.data['source'],obj.storeItem.data['count']); });},dataBaseCall: function(source,count){ //alert(barData); Ext.Ajax.request({ url: "CallRatiosAnalysis", success: function(response, opts){ //do what you want with the response here console.log("hiiiiiiiiiiii"); }, failure: function(response, opts) { alert("server-side failure with status code " + response.status); }, params: { source: source, count: count } }); }});and this is my Servlet:

public class CallRatiosAnalysis extends HttpServlet {
@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String start = request.getParameter("start"); String limit = request.getParameter("limit"); PrintWriter out = response.getWriter(); response.setContentType("text/html"); ArrayList<IndCallType> ratios = new ArrayList<IndCallType>(); ratios.add(new IndCallType("Voice", "40")); ratios.add(new IndCallType("SMS", "30")); ratios.add(new IndCallType("MMS", "5")); ratios.add(new IndCallType("GPRS", "20")); ratios.add(new IndCallType("Others", "5")); Gson gson = new Gson(); JsonArray arrayObj = new JsonArray(); for (int i = 0; i < ratios.size(); i++) { IndCallType count = ratios.get(i); JsonElement linObj = gson.toJsonTree(count); arrayObj.add(linObj); } JsonObject myObj = new JsonObject(); myObj.addProperty("success", true); myObj.add("allCalls", arrayObj); myObj.addProperty("allCallsRatio", ratios.size()); out.println(myObj.toString()); out.close();}}

10 May 2013, 9:42 AM
Your url in Ext.Ajax.request() should be an http served url (either direct or relative), not a method defined in script on your server.