如何在AJAX调用中获得响应?

时间:2016-01-17 08:00:27

标签: javascript java jquery ajax jsp

我在执行应用程序时遇到困难。

我有一个JSP页面,我以表格格式显示所有用户详细信息。该表中的每一行都有一个复选框。用户应该能够删除选定的行/行。有3个按钮,ADDREMOVEUPDATE。当我单击“添加”按钮时,将出现一个包含表单的对话框,它将显示用户详细信息。单击该对话框上的“保存”按钮后,将向该表添加一行以及所有这些详细信息。

我已经实现了上述用例。但我面临一个问题。 当前复选框值是employeeId。当我添加一名员工时,我正在进行ajax调用,调用控制器,然后是服务和DAO。在DAO层中,我获得了新生成的EMP id(通过序列生成)。我可以将该ID传递给控制器​​类。但是如何将其恢复到JSP以便我可以将其设置为新添加的复选框的值?

Ajax致电:

$("#addEmpBtn").click(function () {
          var empData = $("#empForm").serialize();
          $.ajax({
                type : "POST",
                url  : "manageEmpMain/addEmp.do",
                data: empData
               });  
          $('#dialogEmp').dialog('close');
          $('#empTable').append('<tr><td><input type="checkbox" value="" name="empCheck" id="empCheck"></td><td>Other details</td></tr>');
      });

我想将id作为上述复选框的值

控制器:

public class ManageEmpMainController extends MultiActionController {

ManageEmpService manageEmpService;

    public ModelAndView addEmp(HttpServletRequest req, HttpServletResponse resp) {
        Employee emp = new Employee(\\Details);
        manageEmpService.addEmp(emp);

        return null;
    }
}

DAO:

public class ManageEmployeeDaoImpl extends HibernateDaoSupport {
@Override
    public void addEmployee(Employee emp) {
        // TODO Auto-generated method stub
        int empId = (Integer)getHibernateTemplate().save(emp);
        System.out.println("ID " +empId); // This empId can be passed to the controller. Not implemented yet 

    }
}

如果您需要任何其他信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

AJax调用是异步的。这意味着您可以在从ajax调用获得响应之前执行其他代码。那就是代码中发生的事情。此外,您没有使用服务器返回的任何值。

使用它:

$("#addEmpBtn").click(function () {
  var empData = $("#empForm").serialize();
  $.ajax({
    type : "POST",
    url  : "manageEmpMain/addEmp.do",
    data: empData
  }).done(function(response){
    $('#dialogEmp').dialog('close');
    $('#empTable').append('<tr><td><input type="checkbox" value="" name="empCheck" id="' + (response.id) + '"></td><td>Other details</td></tr>');
    })
});