2014-01-13 3 views
0

Я использую ExtJs 3.4, и у меня есть поле со списком. Когда пользователь выбирает значение из этого комбо, будет вызываться запрос Ajax для извлечения данных из моей базы данных postgresql в соответствии с выбранным значением.ExtJs 3.4: Извлечь данные из ответа Ajax

listeners : { 
      select : function() { 
       var selVehicleCode = Ext.getCmp('vehicleCombo').getValue(); 
       var selFromDate = Ext.getCmp('fromDateCombo').getValue(); 

       Ext.Ajax.request({ 
         method: 'GET', 
         loadMask: true, 
         scope: this, 
         url: "http://" + host + ":" + port + "/" + projectName + "/" 
          + "SetDefaultValues", 
         success: function (response, request) { 
         Ext.MessageBox.alert('success', response.responseText); 

         }, 
         failure: function (response, request) { 
         Ext.MessageBox.alert('failure', response.responseText); 
         }, 
         params : { 
         selectedVCode : selVehicleCode, 
         selectedFromDate : selFromDate.format('Y-m-d') 
         } 
       }); 

      } 

     } 

И это мой сервлет SetDefaultValues.java.

//imports 
public class SetDefaultValues extends HttpServlet { 
private static final long serialVersionUID = 1L; 

/** 
* @see HttpServlet#HttpServlet() 
*/ 
public SetDefaultValues() { 
    super(); 
    // TODO Auto-generated constructor stub 
} 

@Override 
public void init() throws ServletException { 
    // TODO Auto-generated method stub 
    super.init(); 
} 

/** 
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse 
*  response) 
*/ 
protected void doGet(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    processRequest(request, response); 
} 

/** 
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse 
*  response) 
*/ 
protected void doPost(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    processRequest(request, response); 
} 

protected void processRequest(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 
    response.setContentType("text/html;charset=UTF-8"); 
    PrintWriter out = response.getWriter(); 

    ServletContext context = getServletContext(); 

    String dbName = context.getInitParameter("ConnectionDB"); 
    String connectionHost = context.getInitParameter("ConnectionHost"); 
    String connectionUser = context.getInitParameter("ConnectionUser"); 
    String connectionPassword = context 
      .getInitParameter("ConnectionPassword"); 
    String port = "5433"; 

    Statement statement = null; 
    ResultSet defaultSet = null; 
    Connection pgConnection = null; 
    // String lineString = ""; 

    try { 
     pgConnection = ConnectionManager.getPostgresConnection(
       connectionHost, connectionUser, connectionPassword, dbName, 
       port); 
     // out.println(connectionHost+","+ connectionUser+","+ 
     // connectionPassword+","+ dbName); 
     statement = pgConnection.createStatement(); 
     // out.print(pgConnection); 

     String vCode = request.getParameter("selectedVCode"); 
     String fromDate = request.getParameter("selectedFromDate"); 
     // out.print(fromDate); 
     // out.print(vCode); 

     String sql = ""; 

     sql += "SELECT v.vehiclecode, v.employeecode, e.name, e.employeecategory"; 
     sql += " FROM hoobtvehcileemplyees v, hoobtemplyees e"; 
     sql += " WHERE v.employeecode = e.employeecode AND"; 
     sql += " v.vehiclecode = " + vCode + " AND v.datefrom < '" + fromDate + "' AND v.dateto > '" + fromDate + "'"; 

     defaultSet = statement.executeQuery(sql); 

     String jsonData = "{'defaultVal':["; 

     while (defaultSet.next()) { 
      jsonData += "{ 'category' : '"; 
      jsonData += defaultSet.getString(4).trim(); 
      jsonData += "', "; 
      jsonData += "'name' : '"; 
      jsonData += defaultSet.getString(3).trim(); 

      if (defaultSet.isLast()) { 
       jsonData += "' } "; 
      } else { 
       jsonData += "' } , "; 
      } 
     } 

     jsonData += "]}"; 
     out.print(jsonData); 

    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     out.println(e.toString()); 
     e.printStackTrace(); 

    } 

} 

} 

И вот мой ответ Ajax.

{'defaultVal':[{ 'category' : '1', 'name' : 'Kamal Subhasingha' } , { 'category' : '2', 'name' : 'Namal Witharana' } , { 'category' : '3', 'name' : 'Yohan' } , { 'category' : '4', 'name' : 'Ahan Liyanage' } , { 'category' : '5', 'name' : 'Sampath Jayaweera' } , { 'category' : '6', 'name' : 'Saman' } ]} 

Теперь мне нужно получить имя поля по отношению к 3-й категории и категории 5. И я должен установить эти значения, как мои ценности коробчатых комбо (у меня есть два поля со списком). Я пробовал следовать.

var jsonData = Ext.util.JSON.decode(response.responseText); 
console.log(jsonData); 
alert(jsonData.name); 

Он печатает jsonData. Но он дает предупреждение с неопределенным.

Что случилось с моими кодами? У кого-то есть идея?

Я был бы очень признателен, если кто-нибудь, пожалуйста, будьте настолько любезны, чтобы объяснить, что происходит с моими кодами, и как мне это делать.

Спасибо

ответ

1

Вы забыли о defaultVal параметр, который содержит другие объекты.

console.log(jsonData.defaultVal); 

Чем вы можете получить доступ к свойству 'имя'

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