我的ajax
项目中的Laravel 5
表单提交存在问题。我在浏览器控制台中收到以下错误:
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
我已尝试在其他帖子和网站上找到许多没有运气的建议。这是我的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!') );
}
}
}
}
我会在self::executeInsertQuery(...)
内发布代码,但考虑到subscribe
路由似乎没有达到validate
方法,我认为不相关。
对于如何解决问题的任何建议或建议将不胜感激!提前谢谢!
答案 0 :(得分:4)
问题是validate
函数是Laravel控制器中的预定义方法,因此您可以覆盖它并导致问题。尝试将其更改为其他内容。
答案 1 :(得分:2)
首先,发送没有ajax的表单并验证它是否记录了发送的数据,然后,在其ajax函数中,更改参数"方法":" POST"到"键入":" POST"然后再试一次。注意:jquery 3.0之前的版本需要用类型表示,或者默认发送GET。
其次,更改名称方法"验证" to" validateSuscriber",因为Controller类已经有一个"验证"方法和冲突是通过两个相同的方法创建的。
答案 2 :(得分:2)
尝试
return response()->json([
'body' => 'You have subscribed!'
]);