繁体   English   中英

通过Laravel进行Ajax请求的问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM