解决ajax提交form,点击保存按钮和点击回车效果不同的问题

来源:互联网 发布:手机cad画图软件 编辑:程序博客网 时间:2024/04/30 05:45
$("#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;     }}
0 0
原创粉丝点击