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

Javascript 如何在AJAX调用中获得响应?,javascript,java,jquery,ajax,jsp,Javascript,Java,Jquery,Ajax,Jsp,我在应用程序的实现过程中遇到了问题 我有一个JSP页面,其中以表格格式显示所有用户详细信息。该表中的每一行都有一个复选框。用户应该能够删除选定的行。有3个按钮,添加、删除和更新。当我点击“添加”按钮时,会出现一个对话框,其中包含一个表单,并显示用户详细信息。单击该对话框上的“保存”按钮后,将向该表中添加一行,其中包含所有这些详细信息 我已经实现了上述用例。但我面临一个问题。 当前复选框值为employeeId。当我添加一个雇员时,我正在进行一个ajax调用,调用的是一个控制器,后跟服务和DAO。

我在应用程序的实现过程中遇到了问题

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

我已经实现了上述用例。但我面临一个问题。 当前复选框值为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>');
      });
public class ManageEmpMainController extends MultiActionController {

ManageEmpService manageEmpService;

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

        return null;
    }
}
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 

    }
}
DAO:

$("#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>');
      });
public class ManageEmpMainController extends MultiActionController {

ManageEmpService manageEmpService;

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

        return null;
    }
}
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 

    }
}

如果您需要任何其他信息,请告诉我。

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

使用以下命令:

$(“#addEmpBtn”)。单击(函数(){
var empData=$(“#empForm”).serialize();
$.ajax({
类型:“POST”,
url:“manageEmpMain/addamp.do”,
数据:empData
}).完成(功能(响应){
$('dialogEmp')。dialog('close');
$('#可空')。追加('其他详细信息');
})

});谢谢你的回复。但不知道这会有什么帮助。是做同样的事对吗?不是做同样的事我的朋友。。检查我的更新答案
done
或更好的
success
将在ajaxOk之后调用,但如何在done方法中获得该值?我可以拿到那个id直到控制器级别。在这之后,我如何将它传递给JSP,因为我没有从控制器返回任何模型?