如何将ajax中返回的数据发送到同一文件中的php?

时间:2019-06-03 11:56:01

标签: php ajax laravel

调用AJAX之后,我获得了JSON格式的AJAX数据。现在,我想将该数据发送到laravel的相同刀片文件中的foreach循环中。

*这是一个带有laravel控制器以json格式返回的数据的ajax *

    <script>
        $(document).ready(function(){
            $('.category').click(function(){
                var id= "";
                id= $(this).val();
                    console.log(id);
                    $.ajax({
                        url:"browse-events",
                        method: "GET",
                        data:{id:id},
                        success:function(reponseData){
                            console.log(responseData);
                        },
                        error:function(){
                            console.log('Error in receiving data');
                        }
                    });  
            });
        });
    </script>

*这是php中的foreach循环,必须循环返回ajax的返回数据*

            @foreach ($responseData as $data)
                <div class="col-md-4 col-sm-6">
                        <h6>{{$data->name}}</h6>
                        <p >{{$data->data_id}} </p>
                </div>
            @endforeach

在Ajax调用中,此处 reponseData 返回了Json格式的数据。现在,我需要将数据发送到laravel的相同blade.php文件中的php的foreach循环。我该怎么办?

2 个答案:

答案 0 :(得分:1)

不可能将ajax / json数据发送到刀刃foreach循环。     呈现页面时,Blade处理基于php的数组,而页面已经加载时,ajax则加载数据。

The solution here would be to place the data with a javascript for loop:
$(document).ready(function(){
            $('.category').click(function(){
                var id= "";
                id= $(this).val();
                    console.log(id);
                    $.ajax({
                        url:"browse-events",
                        method: "GET",
                        data:{id:id},
                        success:function(reponseData){
                            let parentObject = $('#parentObject'); //The object where all divs are in
                            responseData.forEach((data) => {
                                parentObject.append('
                                    <div class="col-md-4 col-sm-6">
                                        <h6>'+ data.name +'</h6>
                                        <p>'+ data.data_id +' </p>
                                    </div>
                                ');
                            })
                        },
                        error:function(){
                            console.log('Error in receiving data');
                        }
                    });  
            });
        });

答案 1 :(得分:1)

你不能。

您可以做什么:

  1. 使用React,Vue.js或Angular
  2. 在收到响应后创建HTML元素,并通过JS插入它们
  3. 返回已经渲染的内容(不建议),只需将其插入视图中
  4. 仅使用查询参数id重新加载页面并相应地呈现页面