Laravel:使用 jquery ajax api 发布数据来存储数据时获取 405 Method Not Allowed
Posted
技术标签:
【中文标题】Laravel:使用 jquery ajax api 发布数据来存储数据时获取 405 Method Not Allowed【英文标题】:Laravel: Get 405 Method Not Allowed while posting data using jquery ajax api to store data 【发布时间】:2014-08-25 10:11:08 【问题描述】:我正在尝试使用 Laravel 4.* 中的 jQuery ajax api 将数据保存到数据库并收到 405 错误。
查看
Form::open(array("","id"=>"frmProcessLevel"))
<input name="$result->id.'_'.str_replace(' ','-',$title)" id="processLevel">
<h3>$title Impact rating</h3>
<table class="table table-bordered" style="font-size: 12px">
<thead>
<tr>
<th>Level</th>
<th>Category</th>
<th>Description</th>
</tr>
</thead>
<tbody class="selectable selectable-rows">
@foreach($impact_rating as $key => $value)
<tr data-key="$key">
<td>$key</td>
<td>$impact_cat[$key]</td>
<td>$value</td>
</tr>
@endforeach
</tbody>
</table>
Form::token()
Form::submit('Save')
Form::close()
<script>
//Submit the form functions
$("#frmProcessLevel").submit(function (e)
e.preventDefault();
var selectedLevel = $("#processLevel").val();
var datastring = 'selectedLevel='+selectedLevel;
//alert(selectedLevel);
$.ajax(
headers:
'X-CSRF-Token': $('meta[name="_token"]').attr('content')
,
url: "/bia/create_critical_process/",
type: "post",
data: datastring,
success: function (data)
console.log(data);
, "json");
);
</script>
路线
Route::post('/bia/create_critical_process',array('before' => 'csrf','uses'=>'BiaController@createBiaStepThree'));
控制器
public function createBiaStepThree()
$data = Input::all();
$last_insert_bia_id = Session::get('last_insert_bia_id');
if (Request::ajex())
Log::info(Input::all());
$bia = new CriticalProcessStepThree();
$bia->impact_rating_clinical = $data['selectedLevel'];
$bia->key_process_fk = 1;
$bia->bia_entry_fk = $last_insert_bia_id;
$bia->save();
传递令牌:http://words.weareloring.com/development/laravel/laravel-4-csrf-tokens-when-using-jquerys-ajax/
【问题讨论】:
您的路线在我看来是错误的。您缺少它使用的控制器的数组中的密钥。应该是'uses'=>'BiaController@createBiaStepThree'
@Jeemusu 我已经添加了,还是不行
然后更新您的问题以反映新代码。通过仍然无法正常工作,我假设您遇到了相同的 405 错误?
@Jeemusu 是的得到同样的错误,我更新了代码。
好的,根据我的理解,我将路由更改为 /bia/create_critical_process?并有 404 而不是 405
【参考方案1】:
AJAX 中的示例。
var formData = new FormData();
formData.append("password", password.val());
$.ajax(
url: 'btn',
method: 'post',
processData: false,
contentType: false,
cache: false,
dataType: 'json',
data: formData,
success: function(data)
var vote_now = $("#vote_now");
if(data.btn == 'visible')
vote_now.fadeIn();
else
vote_now.fadeOut();
,
error: function()
);
【讨论】:
【参考方案2】:在您的控制器中,您有一个错字。
应该是
if(Request::ajax())
而不是
Request::ajex()
不确定这是否是您唯一的问题,但这是其中之一。
编辑:你也应该设置你的请求类型。
type :"POST",
还要确保您的路线设置为接受类似的帖子请求。
Route::post('route/what/ever/you/want', 'Controller@function');
【讨论】:
以上是关于Laravel:使用 jquery ajax api 发布数据来存储数据时获取 405 Method Not Allowed的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 中使用 Ajax/jQuery 从数据库中获取数据
使用 Laravel 将 jQuery Ajax POST 请求作为 GET 发送
使用 jquery-Ajax 在 html 表中显示 laravel 返回结果