【发布时间】:2017-01-27 01:54:06
【问题描述】:
我正在使用 ajax 进行表单更新。当我在 ajax 中使用 GET 方法时它工作正常,但是当我使用 Post 方法时它会抛出错误 405 方法不允许。我正在本地主机上对此进行测试。我以前在 localhost 中做过这个,效果很好。顺便说一句,我为此使用 Laravel 5.2。
这是我的 ajax 代码。
$('#update-modal').on('click',function(){
$.ajax({
method : "POST",
url : updateURL,
data : { client_id : $('#client_id').val(),
client_name : $('#client_name').val(),
client_business : $('#client_business').val(),
client_ref : $('#client_ref').val(),
gmail_mail : $('#gmail_mail').val(),
gmail_pass : $('#gmail_pass').val(),
client_dob : $('#client_dob').val(),
client_addr : $('#client_addr').val(),
client_no1 : $('#client_no1').val(),
client_no2 : $('#client_no2').val(),
domain_name : $('#domain_name').val(),
domain_p_date : $('#domain_p_date').val(),
domain_reg : $('#domain_reg').val(),
domain_ex_date : $('#domain_ex_date').val(),
domain_acc_email : $('#domain_acc_email').val(),
domain_acc_pass : $('#domain_acc_pass').val()},
_token : token
})
.done(function(msg){
console.log(msg['message']);
});
});
这是我在视图中使用的脚本
<script>
var updateURL = '{{ route('updateDomain') }}';
var token = '{{Session::token()}}';
</script>
这是我的路线
Route::post('/updateDomainModal' ,function(\Illuminate\Http\Request $request){
return response()->json(['message'=> $request['client_name']]);
})->name('updateDomain');
当 ajax 函数和 Route 中的方法更改为 GET 时,它会打印在控制台中传递的客户端名称但是当使用 POST 方法执行相同操作时,它会抛出错误这是错误详细信息
jquery.min.js:2 GET http://localhost:8000/updateDomainModal?client_id=4&client_name=ABCD&client…2+15%3A01%3A40&domain_acc_email=abc123%40gmail.com&domain_acc_pass=123456 405 (Method Not Allowed)
【问题讨论】:
-
我猜想使用 post 方法,您需要将数据作为有效负载而不是作为查询参数发送。发送前在数据上尝试
JSON.Stringify() -
使用 type:"POST" 而不是 method:"POST"
-
@Mir
type只是method的别名 -
服务器期望接收什么内容类型?
-
@mdziekon 谢谢。可能是 OP 正在执行跨域 ajax 发布
标签: javascript php jquery ajax laravel