jQuery优雅Post提交
本功能实现:
- 禁用form原本提交方式;
- 自动获取action属性;
- 自动serialize数据;
- 提交状态显示到提示框,1.2秒提示框自动消失;
- 提交失败或错误,页面不跳转;
- 提交成功,跳转到指定页面。
HTML代码:
<formaction="submit.php"> <inputname="title"value=""/> <buttontype="submit">提交</button> </form>
JavaScript代码:
$('form').submit(function(e){
e.preventDefault();
varself=$(this);
$.post(
self.attr("action"),
self.serialize(),
function(result){
if(result.success){
sucess_prompt(result.msg);
setTimeout(function(){
window.location.href=index.php;
},1000);
}else{
fail_prompt(result.msg);
returnfalse;
}
},
'json'
).complete(function(result){
varsqlError=result.responseText.indexOf('SQL');
if(result.status==200&&sqlError!=-1){
fail_prompt('SQL错误:'+result.responseText,3000);
returnfalse;
}
});
});
在PHP代码中,
- 如果数据库执行成功,返回JSON数据:["success"=>true,"msg"=>"保存成功"],
- 如果数据库执行失败,返回JSON数组:["success"=>false,"msg"=>"保存失败"],
- 如果数据库执行错误,用throw抛出异常,异常信息里面只要包含SQL字符串,jquery的complete方法就可以获取到错误信息,并提示。
其中,成功、失败提示框用到:JQuery定时自动消失提示框/弹出框。