本文主要实现ajax来post请求(由于是跨站请求,所以需要在服务端加上head请求头:
header('Access-Control-Allow-Origin:http://m.020h.com');
)
开始提交的时候老是报错,提示405 Method not allowed,以为是跨域请求权限的问题,后来加 了请求头还是不行,百度里说是html不可以提交post提交,必须要改nginx服务配置,修改了还是不行,最后发现我的表单中将提交方法写成了submit,并且将表单中的的method = "post"了,所以一旦我点击了submit提交,会使整个页面刷新,所以浏览器刷新后会去寻找post请求的方法,却找不到则会出现405错误
解决方法:
在form表单中,把action和method直接去掉,然后把提交表单类型type改成button按钮
ajax提交请求:
$.ajax({ type:"post", url:"http://crm.*****.com/addLeads", data:$('#buyform').serialize(), dataType:"json", success:function (res) { if(res.code==200){ $('.mesg').html(res.msg); $('.submit_btn').css("background-color","#7d7b7a"); $('.submit_btn').attr("disabled",true); }else { $('.mesg').html(res.msg); } }, error:function () { $('.mesg').html("请求异常!"); } })
php处理请求页面:
//处理前台提交表单 public function addLeads() { if(request()->isPost()){ $data['kh_name'] = Request::param('kh_name'); $data['phone'] = Request::param('phone'); $data['kh_address'] = Request::param('province').'-'.Request::param('city').'-'.Request::param('area'); $data['kh_need'] = Request::param('car_from').'-'.Request::param('pinpai').'-'.Request::param('cartype'); $data['ut_time'] = date("Y-m-d H:i:s",time()); $data['at_time'] = date("Y-m-d H:i:s",time()); $data['status'] = 2; $data['ispublic'] = 1; $userExist = db('crm_leads')->where('phone', $data['phone'])->find(); if ($userExist){ $msg = ['code' => -200,'msg'=>'抱歉,手机号不可以重复添加!','data'=>[]]; return json($msg); } $result = Db::table('crm_leads')->insert($data); if ($result){ $msg = ['code' => 200,'msg'=>'恭喜,信息提交成功,请保持手机畅通!','data'=>[]]; return json($msg); }else{ $msg = ['code' => 0,'msg'=>'添加失败,刷新后再提交!','data'=>[]]; return json($msg); } } }
至此,就完成了ajax提交post表单的全部流程,有不懂的欢迎留言交流!