首页 > 解决方案 > Laravel 中的多 AJAX 请求

问题描述

Goodtime 我写了这段代码,但是当我发送数据库时,只提交一个查询“悲伤”!çi use $request->has('happy') or ...no working 任何人都可以帮助我吗?对于示例 ** $request->has('happy')** submit 'happy' or **$request->has('love')** 提交“爱”感谢 stackoverflow 和成员,我已经厌倦了搜索

 <form method="post">
                                {{csrf_field()}}

                                <button type="submit" value="happy" id="happy" class="border-0 btn-submit">
                                    <img src="/assets/images/reactions/happy.png" />
                                </button>
                                <button type="submit" value="angry" id="angry" class="border-0 btn-submit">
                                    <img src="/assets/images/reactions/angry.png" />
                                </button>
                                <button type="submit" value="ill" id="ill" class="border-0 btn-submit">
                                    <img src="/assets/images/reactions/ill.png" />
                                </button>
                                <button type="submit" value="love" id="love" class="border-0 btn-submit">
                                    <img src="/assets/images/reactions/in-love.png" />
                                </button>
                                <button type="submit" value="quiet" id="quiet" class="border-0 btn-submit">
                                    <img src="/assets/images/reactions/quiet.png" />
                                </button>
                                <button type="submit" value="sad" id="sad" class="border-0 btn-submit">
                                    <img src="/assets/images/reactions/sad.png" />
                                </button>
                                <!-- <input type="text" name="studentName" id="studentName" class="form-control" placeholder="please type in your name"> -->

                                <input type="hidden" value="{{$article->id}}" id="post_id">
                                <input type="hidden" name="_token" value="{{csrf_token()}}">

                            </form>
                            <script type="text/javascript">
                                $.ajaxSetup({
                                    headers: {
                                        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                                    }
                                });

                                $(".btn-submit").click(function(e) {

                                    e.preventDefault();
                                    var post_id = $("#post_id").val();
                                    var sad = $("#sad").val();
                                    var quiet = $("#quiet").val();
                                    var love = $("#love").val();
                                    var ill = $("#ill").val();
                                    var angry = $("#angry").val();
                                    var happy = $("#happy").val();



                                    $.ajax({
                                        type: 'POST',
                                        url: "{{ route('ajaxRequest.post') }}",
                                        data: {
                                            post_id: post_id,
                                            sad: sad,
                                            quiet: quiet,
                                            love: love,
                                            ill: ill,
                                            angry: angry,
                                            happy: happy
                                        },

                                        success: function(data) {
                                            alert(data.success);

                                        }
                                    });

                                });
                            </script>
                        </div>
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Reaction;
use Illuminate\Support\Facades\Auth;

class AjaxController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function ajaxRequest()
    {
        return view('ajaxRequest');
    }

    /**
     * Create a new controller instance.
     *
     * @return void
     */

    public function ajaxRequestPost(Request $request, Reaction $reaction)
    {
        $input = $request->all();
        \Log::info($input);
        if ($request->ajax()) {


            if (!Auth::user()) {   // Check is user logged in
                $must_login = "you must login";
                return response()->json(['success' => $must_login]);
            } else {

                $date = date('Y-m-d');
                $user_id = Auth::user()->id;
                $output = "Your reaction Submited";
                $post_id = $request->input('post_id');
                // Checker
                $checker = Reaction::select('*')->where([
                    ['post_id', '=', $post_id],
                    ['user_id', '=', $user_id],
                    ['date', '=', $date]
                ])->first();
                if ($checker == null) {








                    if ($request->has('sad') == true) {
                        Reaction::create([
                            'user_id' => $user_id,
                            'post_id' => $post_id,
                            'reaction' => 'sad',
                            'date' => $date,
                        ]);
                    } elseif ($request->has('love')) {
                        Reaction::create([
                            'user_id' => $user_id,
                            'post_id' => $post_id,
                            'reaction' => 'love',
                            'date' => $date,
                        ]);
                    } else {
                        echo "fuck";
                    }

                    return response()->json(['success' => $output]);
                } else {
                    return response()->json(['success' => 'You Befor Submited Your Rection']);
                }
            }
        }
    }
}

标签: ajaxlaravel-7

解决方案


这应该有效:

<script type="text/javascript">
$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

$("form").on('submit', function(e) {
    e.preventDefault();
    var post_id = $("#post_id").val();
    var reaction = $(".btn-submit").val();
    $.ajax({
        type: 'POST',
        url: "{{ route('ajaxRequest.post') }}",
        data: { post_id, reaction },
        success: function(data) {
            alert(data);
        }
    });
});
public function ajaxRequestPost(Request $request)
{
    $data = $request->all();
    return response()->json($data);
}

推荐阅读