简体   繁体   English

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

[英]LAravel 5.4: Response from controller to blade by Ajax (laravel, json_encode() expects parameter 2 to be integer, object given)

I want to response the data from controller to AJAX as array, but it keep showing this error: 我想将数据从控制器以数组的形式响应到AJAX,但它始终显示此错误:

json_encode() expects parameter 2 to be integer, object given json_encode()期望参数2为整数,给定对象

the following is my code: 以下是我的代码:

 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);
    }

This is my AJAX code: 这是我的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;

New error: 新错误:

leads:7515 Uncaught ReferenceError: leads_attendances is not defined at Object.success (leads:7515) at i (jquery.min.js:2) at Object.fireWith [as resolveWith] (jquery.min.js:2) at z (jquery.min.js:4) at XMLHttpRequest. Leads:7515 Uncaught ReferenceError:未在i(jquery.min.js:2)在Object.fireWith的i。(jquery.min.js:2)的Object.success(Leads:7515)处定义了z_处的as.withWith(jquery.min.js:2)的Leads_attendances jquery.min.js:4),位于XMLHttpRequest。 (jquery.min.js:4) (jquery.min.js:4)

Output response of incpect: 预期的输出响应:

{"output":{"id":"25","country":"","company_name":"comp1","lead_stage":"under"},"leads_attendances":[{"event_name":"event1","name":"LEMUN","company_name":"comp1","attend_status":"Yes"},{"event_name":"event2","name":"ZDMJ","company_name":"comp1","attend_status":"Yes"},{"event_name":"event3","name":"MNAl","company_name":"comp1","attend_status":"Yes"},{"event_name":"event","name":"Khalai","company_name":"comp1","attend_status":"Yes"},{"event_name":"event4 ","name":"Zamel","company_name":"comp1","attend_status":"Yes"}]} { “输出”:{ “ID”: “25”, “国”: “”, “COMPANY_NAME”: “COMP1”, “lead_stage”: “下”}, “leads_attendances”:[{ “EVENT_NAME”:“事件1 “ ”名“: ”LEMUN“, ”COMPANY_NAME“: ”COMP1“, ”attend_status“: ”是“},{ ”EVENT_NAME“: ”事件2“, ”名“: ”ZDMJ“, ”COMPANY_NAME“:” COMP1 ”, “attend_status”: “是”},{ “EVENT_NAME”: “EVENT3”, “名”: “MNAL”, “COMPANY_NAME”: “COMP1”, “attend_status”: “是”},{ “EVENT_NAME”: “ event”,“ name”:“ Khalai”,“ company_name”:“ comp1”,“ attend_status”:“ Yes”},{“ event_name”:“ event4”,“ name”:“ Zamel”,“ company_name”: “COMP1”, “attend_status”: “是”}]}

Build table in JS: 在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>';


                    }

The first array ($output) passed and working well with Ajax, but the second collection showing that error. 第一个数组($ output)通过了并且可以与Ajax一起很好地工作,但是第二个数组显示了该错误。 I still need to pass more than these collection, any help how to pass it and make it work with Ajax? 除了传递这些集合之外,我还需要传递更多的东西,如何传递它并使之与Ajax一起使用有帮助吗?

Thank you 谢谢

You can't use like that echo json_encode($output,$leads_attendances); 您不能使用类似echo json_encode($output,$leads_attendances);

Try this 尝试这个

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

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

in your controller return Json Response like below : 在您的控制器中返回Json Response,如下所示:

return response()->json($response,200); 返回response()-> json($ response,200);

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
        );

        $response=array('output'=>$output,'leads_attendances'=>$leads_attendances);
        return response()->json($response,200);
}

suppose you have table div : 假设您有表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>

your ajax function should be : 你的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);
   }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 json_encode()期望参数2为long,给定字符串 - json_encode() expects parameter 2 to be long, string given Laravel setcookie()期望参数3为整数,给定float - Laravel setcookie() expects parameter 3 to be integer, float given 如何将Controller的JSON响应传递回Laravel 5.4中的AJAX成功方法 - How to pass JSON response from Controller back to AJAX success method in Laravel 5.4 htmlspecialchars() 期望参数 1 是字符串,数组在 laravel 刀片中给出 - htmlspecialchars() expects parameter 1 to be string, array given in laravel blade 如何在 laravel 使用 Z2705A83A5A06637EDCE3458A7 的刀片页面中显示 json 响应数据 - how to display json response data from controller in blade page in laravel using ajax? Laravel-strtolower()期望参数1为字符串,给定对象 - Laravel - strtolower() expects parameter 1 to be string, object given Laravel - htmlspecialchars() 期望参数 1 为字符串,给定为 object - Laravel - htmlspecialchars() expects parameter 1 to be string, object given htmlspecialchars() 期望参数 1 为字符串,laravel 中给出的 object 9 - htmlspecialchars() expects parameter 1 to be string, object given in laravel 9 htmlspecialchars()期望参数1为字符串,给定对象-laravel - htmlspecialchars() expects parameter 1 to be string, object given - laravel Laravel 8 - htmlspecialchars() 期望参数 1 是字符串,给定对象 - Laravel 8 - htmlspecialchars() expects parameter 1 to be string, object given
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM