Php 使用POST to/store资源时不允许使用Laravel方法
我用的是拉威尔5号 我有这样一个“订单”资源:Php 使用POST to/store资源时不允许使用Laravel方法,php,jquery,ajax,laravel,post,Php,Jquery,Ajax,Laravel,Post,我用的是拉威尔5号 我有这样一个“订单”资源: Route::resource('orders', 'OrdersController'); 这将创建以下路由: | | POST | orders | orders.store | App\Http\Controllers\OrdersController@store | web | | | GE
Route::resource('orders', 'OrdersController');
这将创建以下路由:
| | POST | orders | orders.store
| App\Http\Controllers\OrdersController@store | web |
| | GET|HEAD | orders | orders.index | App\Http\Controllers\OrdersController@index | web |
| | GET|HEAD | orders/create | orders.create | App\Http\Controllers\OrdersController@create | web |
| | DELETE | orders/{order} | orders.destroy | App\Http\Controllers\OrdersController@destroy | web |
| | GET|HEAD | orders/{order} | orders.show | App\Http\Controllers\OrdersController@show | web |
| | PUT|PATCH | orders/{order} | orders.update | App\Http\Controllers\OrdersController@update | web |
| | GET|HEAD | orders/{order}/edit | orders.edit | App\Http\Controllers\OrdersController@edit | web |
因此,我尝试使用jQuery发布到我的订单/商店,如下所示:
function StoreOrder(name, supplier, quantity, catnum, notes, urgency){
$.ajax({
type: 'POST',
dataType: 'text',
url: 'orders/store',
data: {
_token: CSRF_TOKEN,
name: name,
supplier: supplier,
quantity: quantity,
catnum: catnum,
notes: notes,
urgency: urgency
},
error: function(jqXHR, textStatus, errorThrown){
console.log(JSON.stringify(jqXHR));
console.log('AJAX Error: ' + textStatus + ": " + errorThrown);
},
success:function(data){
Materialize.toast(data);
//Clear the form
}
})
}
但我收到一个“MethodNotAllowed”错误。
这是我第一次尝试在laravel中使用AJAX。在我自己的过程代码中使用AJAX我很舒服,但是现在使用Laravel我遇到了一些问题。我错过了什么
谢谢
编辑:意识到我可能应该显示我的控制器代码:
<?php
namespace App\Http\Controllers;
use App\Announcement;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Redirect;
use View;
use Auth;
class OrdersController extends Controller {
public function index(){
//show my page
}
public function store(Order $order){
//get a pleasing time stamp
$today = date("F j, Y, g:i a");
//stores a post in the database
$order->create([
'name' => Request::input('name'),
'supplier' => Request::input('supplier'),
'quantity' => Request::input('quantity'),
'catnum' => Request::input('catnum'),
'notes' => Request::input('notes'),
'urgency' => Request::input('urgency'),
'author' => Auth::user()->username,
'date' => $today,
'status' => 'Processing'
]);
return ('Order created successfully.');
}
}
表中说路由是orders
,而不是orders/store
。啊,好吧,只要我向/orders URI发送POST请求,它就会使用来自我的OrdersController的store方法?是的,只需更改url:“orders”
即可!非常感谢。现在转到下一个错误:)令牌不匹配错误。我将自己尝试获取此令牌。@Vrans-令牌不匹配是一种常见的情况,您需要将CSRF令牌作为头发送,而不是作为请求的一部分。