这是使用form表单提交的方法: jsp部分代码省略,其中含有form表单 js部分代码:
function save(){ $("#fm").form("submit", { url :url, onSubmit : function() { return $(this).form("validate"); }, success : function(data) { if (data){ **var data = eval('(' + data + ')');**//这里是将Json字符串转化为javascript Object $.messager.alert("消息提示",data.message, "info"); } $("#dialog").dialog({ closed : true }); $("#fm").form("clear"); $("#dg").datagrid("reload"); $('#dg').datagrid('clearSelections'); } }); }后台代码:
@controller public Object addInfo(WareHouseAddCommand ud,HttpServletRequest request){ ResultCommand<BaseObject> result = new ResultCommand<BaseObject>(); try{ log.info("调用WareHouseService里的addWareHouseInfo方法,入参为:{}",ud); wareHouseService.addWareHouseInfo(ud, request); result.setMessage("添加成功"); }catch(Exception e){ result.setMessage("添加失败,数据库中已存在此用户名"); } return result.toJson(); }//将result转化为json格式的字符串返回给前台,返回的格式为以下这样。 { "message": "添加成功" } 如果是用的springmvc框架,则可以加上@ResponseBody该注解在方法名的上面, 则会自动转化为json格式,这里读者可自行查阅资料了解, 此处的toJson是ResultCommand里面 封装的方法。 }ResultCommand方法里面封装了一些返回前端的消息
public class ResultCommand<T extends BaseObject> extends BaseObject { public final static String SUCCESS = "success"; public final static String FAILED = "error"; private long totalRows; private String errorCode; private String message; private String result = FAILED; get set方法省略。。。。我们可以看到,这里我们用了 var data = eval(‘(’ + data + ‘)’);这条语句将后台传过来的data(假设为Json格式的字符串)转化为了javascript Object格式,这样我们才可以调用data.message将后台的提示消息在前台显示出来。如果没有添加这句,就会在消息提示里面显示undefined,当然这里我们也可以使用Jquery中的$.parseJson(data)将data转化为Json的对象,这样才可以完成调用。
第二种向服务器传递数据的方法就为$.ajax:
$.ajax({ url:baseUrl+"/XXXcontroller/XXX.htm", data:{ $('#yourformid').serialize();//将你的表单序列化,省去将所需要传递的表单name属性一个个写进来的麻烦 }, dataType:'json' //规定预期的服务器响应的数据类型:json/xml/html/script/jsonp/text。自动转换为对象 success:function(data){ if(data){ $.messager.alert('消息提示',data.message,'info'); $('#dg').datagrid({}); $('#dg').datagrid('clearSelections'); }); } } error:function(e){ alert("错误!!"); }最后我们来总结一下 首先ajax方式: 1. ajax提交需要写data,不管是自己添加要传送到后台的内容还是序列化表单。 2. ajax提交的好处就是不用自己转化为json格式,直接加上datatype属性即可,指定预期的服务器响应的数据类型。 3. ajax提交需要自己添加表单验证,或者是先使用form表单验证以后,如果成功在执行ajax方法。因为validate是和form提交方式相结合的。
form表单形式: 1. 好处是不需要自己写data和验证。 2. 坏处是需要自己将json字符串格式转化为json对象格式 最后期待各位高手的批评指教。