Php LAravel 5.4:Ajax从控制器到刀片服务器的响应(LAravel,json_encode()期望参数2为整数,对象给定)

Php LAravel 5.4:Ajax从控制器到刀片服务器的响应(LAravel,json_encode()期望参数2为整数,对象给定),php,jquery,json,ajax,laravel,Php,Jquery,Json,Ajax,Laravel,我想将控制器中的数据作为数组响应到AJAX,但它一直显示此错误: json_encode()要求参数2为整数,对象为给定值 以下是我的代码: function get_show(Request $request) { $id = $request->input('id'); $leads = Lead::find($id); $leads_attendances = DB::table('event_attendances')

我想将控制器中的数据作为数组响应到AJAX,但它一直显示此错误:

json_encode()要求参数2为整数,对象为给定值

以下是我的代码:

 function get_show(Request $request)
    {
        $id = $request->input('id');
        $leads = Lead::find($id);

        $leads_attendances = DB::table('event_attendances')
            ->leftJoin('leads', 'leads.id', '=', 'event_attendances.lead_id')
            ->leftJoin('groups', 'groups.id', '=', 'event_attendances.group_id')
            ->select('groups.name as event_name', 'leads.name as name', 'leads.company_name', 'event_attendances.attend as attend_status')
            ->where('event_attendances.lead_id', '=', $id)
            ->get()->toArray();

        $output = array(
            'id' => $id,
            'country' => $leads->country,
            'company_name' => $leads->company_name,
            'lead_stage' => $leads->lead_stage
        );

        echo json_encode($output,$leads_attendances);
    }
这是我的AJAX代码:

$.ajax({
                    url: "{{route('main.get_show')}}",
                    method: 'get',
                    data: {id: id},
                    dataType: 'json',
                    success: function (response) {

                        console.log(response);
                        $('#model2').modal('show');

                        document.getElementById('leads').innerHTML += response.output.company_name;
                        document.getElementById('leads').innerHTML += response.leads_attendances;
新错误:


潜在客户:7515未捕获的参考错误:未定义潜在客户的出席率 at Object.success(潜在客户:7515) at i(jquery.min.js:2) 在Object.fireWith[as resolveWith](jquery.min.js:2) 在z(jquery.min.js:4) 在XMLHttpRequest。(jquery.min.js:4)

incpect的输出响应:

{“输出”:{“id”:“25”,“国家”:“公司名称”:“comp1”,“领导阶段”:“在”},“领导出席”:[{“事件名称”:“事件1”,“名称”:“勒蒙”,“公司名称”:“comp1”,“出席状态”:“是”},{“事件名称”:“事件2”,“名称”:“ZDMJ”,“公司名称”:“comp1”,“出席状态”:“是”;“事件名称”:“事件3”,“名称”:“MNAl”,“公司名称”:“comp1”,“出席状态”:“参加状态”:“是”},{“事件名称”:“事件”、“名称”:“Khalai”、“公司名称”:“comp1”、“出席状态”:“是”},{“事件名称”:“事件4” “,”姓名“:”扎梅尔“,”公司名称“:”公司1“,”出席状态“:”是“}]}”

在JS中生成表:

success: function (response) {


                        console.log(response);
                        $('#myModaleee').modal('show');


                        var leads_attendances=response.leads_attendances;
                        document.getElementById('lead_details').innerHTML += '<table>';

                        for(var i=0;i<leads_attendances.length;i++){
                            var event_name=leads_attendances[i].event_name;
                            var name=leads_attendances[i].name;
                            var company_name= leads_attendances[i].company_name;
                            var attend_status= leads_attendances[i].attend_status;
                            document.getElementById('lead_details').innerHTML += '<tr>'+
                                '<td>'+event_name+'</td>'+
                                '<td>'+name+'</td>'+
                                '<td>'+company_name+'</td>'+
                                '<td>'+attend_status+'</td>'
                                +'</tr>';
                        }
                        document.getElementById('lead_details').innerHTML += '</table>';


                    }
成功:功能(响应){
控制台日志(响应);
$('mymodalee').modal('show');
var leads_出席率=响应。leads_出席率;
document.getElementById('lead_details')。innerHTML+='';

对于(var i=0;i您不能像那样使用
echo json\u encode($output,$leads\u attents);

试试这个

$data = ['output' => $output, 'leads_attendances' => $leads_attendances];

return response()->json(['results'=> $data]);
or
return response()->json($data);


在控制器中,返回Json响应,如下所示:

return response()->json($response,200)

假设您有表div:

<table>
  <thead>
     <tr>
        <th> event_name </th>
        <th> name </th>
        <th> company_name </th>
        <th> attend_status </th>
     </tr>
  </thead>
  <tbody id="tbody"></tbody>
</table>

事件名称
名称
公司名称
出席会议
您的ajax功能应该是:

$.ajax({
   url:'/url here',
   method:'GET',
   dataType:'json',
   success:function(response){
     console.log(response);
     var id = response.output.id;
     var country= response.output.country;
     var company_name=response.output.company_name;
     var lead_stage =response.output.lead_stage;
     var leads_attendances=response.leads_attendances;
     var trHTML="";
     for(var i=0;i<leads_attendances.length;i++){
        var event_name=leads_attendances[i].event_name;
        var name=leads_attendances[i].name;
        var company_name= leads_attendances[i].company_name;
        var attend_status= leads_attendances[i].attend_status;
        let trRow="<tr>"+
                  "<td>"+event_name+"</td>"+
                  "<td>"+name+"</td>"+
                  "<td>"+company_name+"</td>"+
                  "<td>"+attend_status+"</td>"
                  +"</tr>";
       trHTML=trHTML+trRow;
     }
     $('#tbody').empty();
     $('#tbody').append(trHTML);

   },
   error:function(err){
      console.log(err);
   }
});
$.ajax({
url:“/url此处”,
方法:'GET',
数据类型:'json',
成功:功能(响应){
控制台日志(响应);
var id=response.output.id;
var country=response.output.country;
var company\u name=response.output.company\u name;
var lead_stage=响应.output.lead_stage;
var leads_出席率=响应。leads_出席率;
var trHTML=“”;

对于(var i=0;iYou应该发布您获得的
$output
,正如错误所说,
json_encode
的参数2应该是整数,它是
选项
而不是像您那样的数组,它工作并传递了我认为是的数据,但是当我打印变量时,显示我没有定义。这就是我打印数据的方式:
success:function(data){document.getElementById('lead_details')。innerHTML+=data.leads_attents;//此函数用于完整数组不工作的文档。getElementById('lead_details')。innerHTML+=data.country;//数组中的元素不工作太多文档。getElementById('lead_details')).innerHTML+=data.company\u name;//数组中的元素工作不太正常
我可以知道如何获取传递的数据吗,是通过
输出['company\u name'];
?使用
控制台.log(response)
打印json响应吗?您将获得想法或发布在这里是,
响应。leads\u出席;
向我展示
[object][object]
,如何解决这个问题并进一步深入这个雄辩的in-for循环中的每个元素?如何在AJAX中获取响应数据?很抱歉,最后一个不起作用
var leads\u attentings=response.leads\u attentings;
show me
[object][object]
,如何解决这个问题,以及如何进一步处理这个雄辩的for循环中的每个元素?@AbdallaWasef,var leads_attentings,向您显示
[object][object]
意味着它是数组,您必须循环它
控制台.log(leads_attentings)
。未捕获的引用错误:leads_attentings没有定义
$.ajax({
   url:'/url here',
   method:'GET',
   dataType:'json',
   success:function(response){
     console.log(response);
     var id = response.output.id;
     var country= response.output.country;
     var company_name=response.output.company_name;
     var lead_stage =response.output.lead_stage;
     var leads_attendances=response.leads_attendances;
     var trHTML="";
     for(var i=0;i<leads_attendances.length;i++){
        var event_name=leads_attendances[i].event_name;
        var name=leads_attendances[i].name;
        var company_name= leads_attendances[i].company_name;
        var attend_status= leads_attendances[i].attend_status;
        let trRow="<tr>"+
                  "<td>"+event_name+"</td>"+
                  "<td>"+name+"</td>"+
                  "<td>"+company_name+"</td>"+
                  "<td>"+attend_status+"</td>"
                  +"</tr>";
       trHTML=trHTML+trRow;
     }
     $('#tbody').empty();
     $('#tbody').append(trHTML);

   },
   error:function(err){
      console.log(err);
   }
});