Laravel 5 `内部服务器错误` (500) Ajax 表单提交
Laravel 5 `Internal Server Error` (500) with Ajax form submission
我在 Laravel 5
项目中提交 ajax
表单时遇到问题。我的浏览器控制台出现以下错误:
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
我尝试了很多在其他 post 和网站上找到的建议,但都没有成功。这是我的 Ajax:
$.ajax({'url': './subscribe'
,'data' : {
"_token": $('meta[name="csrf-token"]').attr('content')
,"email" : $('#subscribe-email-input').val()
}
,'method': 'POST'
,'success': function(data){
console.log( data );
}
,'error': function(data){
console.log( 'oops', data );
}
});
我的 routes/web.php
文件中定义了以下路由:
Route::post('subscribe', ['uses' => 'SubscribeController@validate', 'as' => 'subscribe.route']);
而且控制器非常简单:
class SubscribeController extends Controller
{
/*
* Get email address from DB if exists
*
* @param string email, email address to search and return data from DB
*
* @returns $email
*/
public function validate ( Request $request )
{
$email = addslashes($request->email) ;
if ( $email )
{
$email = \App\Subscribe::where('email', '=', $email)->get();
if ( $email->isEmpty() )
{
self::executeInsertQuery ( $email );
return json_encode( array('body' => 'You have subscribed!') );
} else {
return json_encode( array('body' => 'You are already subscribed!') );
}
}
}
}
我会 post self::executeInsertQuery(...)
中的代码,但考虑到 subscribe
路线似乎甚至没有到达 validate
,我认为它不相关]方法。
任何关于如何解决问题的建议或意见将不胜感激!!提前致谢!
首先发送不带ajax的表单,验证是否记录了发送的数据,然后在其ajax函数中,修改参数"method": "POST" 到 "type": "POST" 然后重试。注意:jquery 3.0之前的版本需要指明类型,否则默认发送GET。
其次,将名称method"validate"改为"validateSuscriber",因为Controllerclass已经有一个"validate"方法,造成冲突通过两种相同的方法。
尝试
return response()->json([
'body' => 'You have subscribed!'
]);
问题是 validate
函数是 Laravel 控制器中的预定义方法,因此您覆盖它并导致问题。尝试将其更改为其他内容。
我在 Laravel 5
项目中提交 ajax
表单时遇到问题。我的浏览器控制台出现以下错误:
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
我尝试了很多在其他 post 和网站上找到的建议,但都没有成功。这是我的 Ajax:
$.ajax({'url': './subscribe'
,'data' : {
"_token": $('meta[name="csrf-token"]').attr('content')
,"email" : $('#subscribe-email-input').val()
}
,'method': 'POST'
,'success': function(data){
console.log( data );
}
,'error': function(data){
console.log( 'oops', data );
}
});
我的 routes/web.php
文件中定义了以下路由:
Route::post('subscribe', ['uses' => 'SubscribeController@validate', 'as' => 'subscribe.route']);
而且控制器非常简单:
class SubscribeController extends Controller
{
/*
* Get email address from DB if exists
*
* @param string email, email address to search and return data from DB
*
* @returns $email
*/
public function validate ( Request $request )
{
$email = addslashes($request->email) ;
if ( $email )
{
$email = \App\Subscribe::where('email', '=', $email)->get();
if ( $email->isEmpty() )
{
self::executeInsertQuery ( $email );
return json_encode( array('body' => 'You have subscribed!') );
} else {
return json_encode( array('body' => 'You are already subscribed!') );
}
}
}
}
我会 post self::executeInsertQuery(...)
中的代码,但考虑到 subscribe
路线似乎甚至没有到达 validate
,我认为它不相关]方法。
任何关于如何解决问题的建议或意见将不胜感激!!提前致谢!
首先发送不带ajax的表单,验证是否记录了发送的数据,然后在其ajax函数中,修改参数"method": "POST" 到 "type": "POST" 然后重试。注意:jquery 3.0之前的版本需要指明类型,否则默认发送GET。
其次,将名称method"validate"改为"validateSuscriber",因为Controllerclass已经有一个"validate"方法,造成冲突通过两种相同的方法。
尝试
return response()->json([
'body' => 'You have subscribed!'
]);
问题是 validate
函数是 Laravel 控制器中的预定义方法,因此您覆盖它并导致问题。尝试将其更改为其他内容。