本文主要实现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表单的全部流程,有不懂的欢迎留言交流!
本文介绍了解决使用Ajax进行POST请求时遇到的405 Method not allowed错误的过程,包括修改表单提交方式、调整Nginx配置及正确设置HTTP请求头,最终实现了跨域请求的成功。
1676

被折叠的 条评论
为什么被折叠?



