$("#submitbt").click(function(){
htmlobj=$.ajax({
type: "POST",url: '${cxt}/smstype/save',data:$("form").serialize(),async:false,dataType: "text",success: function (data) {
if('success'==data){
alert("保存成功");
window.location.href='${cxt}/smstype/getSMSAllType? company_id='+'${param.companyId}';
}else{
alert(data);
}
},error: function (XMLHttpRequest,textStatus,errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
}
})
});
上面是ajax提交form的典型例子:
data:$(“form”).serialize()是提交的参数,如果参数只是一个字段而不是整个form,可以这样写:
data:’id=’+mtId+’&’+’mtUserPhone=’+mtUserPhone,
后台依旧可以用getPara(id)或者getPara(mtUserPhone)来取值。
<form action="#" method="post">
<div class="dep_padleft duanxin_padding">
<input type="text" class="text_style" name="sMSType.type_name"/>
<input type="hidden" name="sMSType.company_id" value="${param.companyId }"
id="companyId"/>
</div>
<div class="submit_btn">
<input value="保存" class="sub_btn1" type="button" id="submitbt" />
<input value="取消" class="sub_btn2" type="button" id="cancelbt" />
</div>
</form>
上面是form表单,当点击保存按钮后,form表单会被提交到后台。
后台通过renderText(“success”);或者renderText(“error”);(这里的后台框架是jFinal)可以返回处理结果。
前台又通过如下代码
if('success'==data){
alert("保存成功");
window.location.href='${cxt}/smstype/getSMSAllType? company_id='+'${param.companyId}';
}else{
alert(data);
}
可以弹出相应的提示框。
但问题是:
当在画面上不点击保存按钮,而是敲击键盘的回车,程序会弹出提示框,但之后的跳转就不对了,直接跳转到了空白页面,页面上显示success?
经调查,js需要添加如下代码:
$(document).keypress(function(event){
//回车码是13
if(event.keyCode ==13){
$("#submitbt").trigger("click");
}
});
让点击回车去触发按钮的click事件,这样两个操作便一致了。
补充:
如果后台返回的是json数据,如:
setAttr("result","success");
setAttr("companyId",companyId.toString());
renderJson(new String[]{"result","companyId"});
前台的解析办法是:
success: function (data) {
// 解析json数据
var json = eval("("+data+")");
if('success'==json.result){
alert("保存成功");
window.location.href='${cxt}/ab/getAddressBookAll?companyId='+json.companyId;
}else if('failbyphone'==json.result){
alert("手机号已存在,请重新填写手机号!");
return false;
}else{
alert(data);
return false;
}
}