jQuery .ajax()POST请求抛出405(方法不允许),但GET没有

时间:2016-09-19 11:27:59

标签: javascript php jquery ajax laravel

我正在使用ajax进行表单更新。当我在ajax中使用GET方法时它工作正常但是当我使用Post方法时它抛出错误405方法不允许。我在Localhost上测试它。我之前在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)

2 个答案:

答案 0 :(得分:0)

使用“POST'

类型
JMSException

如果您提交表格

$.ajax({

      type : '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 

    });

答案 1 :(得分:0)

您在以domain_acc_pass开头的行中错误地使用了}。在分配令牌值后,您应该使用'}'。现在,令牌不会发送到目标,这是必需的。