![](/img/trans.png)
[英]Printing out HTML via an Ajax-Request that is having errors stops further JS from working
[英]Problems with Ajax-request via Laravel
我对通过Laravel进行Ajax请求有很大的疑问。 我不明白为什么不是Ajax。 这里的所有资源。
这是我的Ajax请求。
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script>
var nickname = "<?php echo $name_user; ?>";
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$('.subscribe').click(function() {
jQuery.ajax({
type: 'post',
url: "{{ route('postSubscribe', '<?php echo $name_user; ?>') }}", //Путь к обработчик
data: {'user_name': nickname},
response: 'text',
success: function(data) {
console.log(data['result']);
},
error: alert('Error');
})
})
</script>
这是我的网络路线。
Route::group(['middleware' => 'auth'], function() {
Route::get('/', 'AccountController@redirectToAccountPage');
Route::get('/account', 'AccountController@showAccount')->name('account');
Route::get('/account/settings', 'AccountController@showSettings')->name('settings');
Route::post('/account/settings', 'AccountController@sendSetting');
Route::get('/account/subscribe', 'AccountController@showSubscriberForm')->name('subscriber');
Route::post('/account/subscribe', 'AccountController@findUser')->name('postFindUser');
Route::get('/account/load_image', 'AccountController@showLoadImage')->name('load_image');
Route::post('/account/load_image', 'Photos\LoadPhotoController@loadPhoto');
Route::post('/account/logout', 'AccountController@logout')->name('logout');
Route::post('/user/{user_name}/', 'AccountController@subscribe')->name('postSubscribe');
Route::get('/admin', 'AccountController@showAdminPanel');
});
这是我的主要要求。
public function subscribe(Request $request, $name_user) {
if($request->ajax()) {
$query = 'SELECT id FROM subscriptions WHERE id_subscriber = ? AND id_subscribtion = ?';
$queryFindAnother = 'SELECT id From new_users WHERE nickname = ?';
$idAnotherUser = DB::select($queryFindAnother, [$name_user]);
if(!DB::select($query, [Auth::user()->id, $idAnotherUser[0]->id])) {
$query = 'INSERT INTO subscriptions (id_subscriber, id_subscribtion) VALUES (?, ?)';
dd('Я здесь');
//id_subscriber - тот, кто подписался.
//id_subscribtion - на кого подписан.
DB::insert($query, [Auth::user()->id, $idAnotherUser[0]->id]);
return response()->json([
'result' => '1', //всё прошло успешно, я подписан
]);
}
return back();
}
dd("It's not ajax");
return back();
}
结果,我收到消息“这不是Ajax”。 请帮帮我!
我认为问题出在你的形式上
请更新您的表格
<form>
{!! csrf_field() !!}
<button class="subscribe" name="user" type="button">Подписаться.</button>
</form>
在这里,您不需要任何动作或方法,也不需要任何形式
因为您将表单数据作为ajax传递
并将按钮的类型添加为button
,默认情况下为其提交类型,因此其提交表单的方式正常。
确保已在顶部导入了“ 请求外观”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.