• 主页
  • ajax调用只显示for each循环中第一个项目的输入值。我需要它来显示根据上下文的按钮点击

ajax调用只显示for each循环中第一个项目的输入值。我需要它来显示根据上下文的按钮点击

我正在尝试根据for each循环中按钮单击的上下文将数据发送到控制器。响应仅显示循环的第一次迭代。

@foreach($obj['questions'] as $question)
        <form class="col-md-12" id="upvote">
        <input type="hidden" value="{{$question->id}}" id="question_id" data-id="{{$question->id}}" class="form-control question_id">
        <input type="hidden" value="{{$user->id}}" id="user_id" data-id="{{$user->id}}" class="form-control user_id">
        <button class="btn btn-xs fas fa-arrow-up btn-submit" style="{{ in_array($question->id, $upvotes) ? 'color:gray' : 'color:orange' }}" {{ in_array($question->id, $upvotes) ? 'disabled' : null }}></button>
        </form>
@endforeach

我的ajax脚本如下所示:

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

        $('.btn-submit').click(function(e){
        e.preventDefault(); 
        var question_id = $("input[id=question_id]").val();
        var user_id = $("input[id=user_id]").val();
            $.ajax({
                url: "{{ route('welcome.upvoteAjax') }}",
                type: 'POST',
                data: {question_id:question_id, user_id:user_id},
                dataType: 'json',
                success: function (data) {
                    console.log(data);
                }
            });
        });
    });
</script>

我的路线:

Route::post('/upvoteAjax', 'WelcomeController@upvoteAjax')->name('welcome.upvoteAjax');

我的控制器看起来像这样:

public function upvoteAjax(Request $request){
   if($request->ajax()) {
      return response()->json($request);
   }
}

我在控制台得到的响应是(我还附上了浏览器的截图):

(index):593 {question_id: "736", user_id: "1"}
(index):593 {question_id: "736", user_id: "1"}
(index):593 {question_id: "736", user_id: "1"}

无论我单击循环中的哪一项,这都是输出。我想要的输出是与显示在前端的循环的迭代相关联的问题和用户。任何反馈都将不胜感激。

谢谢。

?

?

转载请注明出处:http://www.jxbyjx.net/article/20230524/1514644.html