gpt4 book ai didi

php - Laravel 5 应用程序 - AJAX Post 请求不接受 token 并抛出 500 内部服务器错误

转载 作者:行者123 更新时间:2023-12-01 03:59:34 25 4
gpt4 key购买 nike

所以,我在这里花了 3 个小时的时间来了解为什么我的代码无法正常工作。我不认为我的 ajax 请求正在检测我的 CSRF token ,尽管我已经尝试了多种方法来实现它。对 AJAX 请求不熟悉,所以放轻松。

目标:向/email/subscribe/提交 ajax POST 请求,并将用户提供的电子邮件地址添加到 email_subscribers 表中。

我尝试将以下内容添加到我的代码中以使 token 显示:

元标记和 Ajax 设置。

文件顶部

<meta name="csrf-token" content="{{ csrf_token() }}">

在 jquery 内的脚本标签 $(document).ready()功能

// CSRF Ajax Token
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});

隐藏输入字段

我还添加了一个隐藏的输入字段,并尝试将 token 插入 ajax post 内的数据对象内。

HTML

<input type="hidden" id="token" value="{{ csrf_token() }}">

Javascript标签

var token = $('#token').val();
// var token = $('meta[name="csrf-token"]').attr('content'); //Tried this way

$.ajax({
type: 'POST',
url: '/email/subscribe/',
dataType: 'json',
data: {
email: email,
'_token': token,
// "_token": "{{ csrf_token() }}", //Tried this way as well
"_method": 'POST',
},
success: function (data) {
// Check Server Side validation
if($.isEmptyObject(data.errors)){
console.log(data['success']);
}else{
// Validation Failed Display Error Message
console.log(data.errors);
}

},
error: function (data) {
console.log(data);
}
}); // End Ajax POST function

这是我的web.php文件

// Email Routes
Route::prefix('email')->group(function() {

// Create Post Route for subscribing
Route::post('/subscribe', 'EmailSubscriptionsController@subscribe')->name('email.subscribe');

});

和我的EmailSubscriptionsController

class EmailSubscriptionsController extends Controller
{
// Store the Email into the database
public function subscribe(Request $request) {

// Validate the request
$validator = Validator::make($request->all(), [
'email' => 'required|email',
]);

// If the validation fails
if($validator->fails()) {
return response()->json([
'errors' => $validator->errors()->all(),
]);
}

// New Section Object
$subscription = new EmailSubscription;

// Add Name into Section Object
$subscription->email = $request->email;

// Save the Section
$subscription->save();

// Return The Request
return response()->json([
'success' => 'Record has been saved successfully!'
]);
} // End Subscribe

} // End Controller

真正奇怪的是,当我提交请求时,除了我的 subscribe() 中的以下内容之外什么都没有。我的 Controller 内的功能:

// Return The Request
return response()->json([
'success' => 'Record has been saved successfully!'
]);

它不会返回错误....只是将成功消息传递到控制台。我不确定我做错了什么,因为我在网站的另一部分工作(ajax post 请求)。

最佳答案

首先在 storage/logs/laravel.log 中查找异常堆栈跟踪。这应该可以更清楚地表明失败的原因。

网络检查器还允许您查看通常包含跟踪的响应。

导致 500 个 ISE 的常见原因是通过 use 不正确地导入类。

关于php - Laravel 5 应用程序 - AJAX Post 请求不接受 token 并抛出 500 内部服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51567718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com