[英]Ajax request yields 404 in Laravel
我試圖在用戶單擊按鈕后更新SQL表。 我正在使用Laravel,無法使ajax調用正常工作,即我收到404響應。 我當前的方法是將請求路由到將其傳遞到控制器的Route。 有人可以幫我理解我的錯誤嗎?
路線
Route::post('/controllers/AccountController', array(
'as' => 'userManagementAjax',
'uses' => 'AccountController@deleteAccount'
));
CONTROLLER
public function deleteAccount(){
if($_POST['action'] == "delete") {
DB::table('users')
->where('email', $_POST['email'])
->update(array('suspended' => 1));
echo "ok";
}
}
HTML和JAVASCRIPT
<script>
function rmuser(a) {
alert('Removing user: '+a);
$.ajax({
url: '/controller/userManagementAjax',
type: 'POST',
data: {'action': 'delete', 'email': a},
success: function(data, status) {
if(data == "ok") {
$('#tr'+a).remove();
}
},
error: function(xhr, desc, err) {
console.log(xhr);
console.log("Details: " + desc + "\nError:" + err);
}
}); // end ajax call
};
</script>
<button class="btn" onclick="rmuser('some_email')">Delete</button>
您的路線定義了以下URL:
器/控制器/的AccountController
而且您的AJAX正在提交以下網址:
/控制器/ userManagementAjax
因此,您應該在ajax調用中收到404錯誤。
路由中的as
語法僅表示命名路由 。 Route::post
調用的第一個參數應該是您所期望的URI,而不是控制器名稱(控制器名稱應在第二個數組參數的uses
鍵中uses
)。
我認為這是您要沿路線行駛的方向:
Route::post('/controllers/userManagementAjax', array(
'as' => 'user.delete',
'uses' => 'AccountController@deleteAccount'
));
第一個字符串參數必須與您嘗試使用AJAX發布到的URL匹配。
要利用命名的路由,您現在可以重定向到user.delete
或生成到該路由user.delete
的鏈接,如下所示:
// Redirect to named route from controller
return Redirect::route('user.delete');
// Display link in blade template to named route
<a href="{{ URL::route('user.delete') }}">Delete User</a>
使用命名路由的好處基本上是,您可以隨意更改routes.php文件中的URL,只要依賴它們的其他所有內容都引用該名稱而不是URL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.