ErrorException,array_merge():当我调用Ajax时,参数#2不是数组

In my users page, I use a div with two tabs "Products" and "Followers", in the second tab, I've a pagination for the list of followers. Not return to the tab "Products" when I try the pagination, I user a call Ajax. But when I try to run it, I have a error 500, and the response of the get is :

{"error":{"type":"ErrorException","message":"array_merge(): Argument #2 is not an
array","file":"\/Users\/utilisateur\/Desktop\/mamp\/ptf-l4\/vendor\/laravel\/framework\
/src\/Illuminate\/View\/Environment.php","line":117}} 

I don't know why and I don't know how to find a solution.

This is my controller :

public function show($id){

    // récupère les données de l'user et les produis qu'il partage
    $show = $this->api->show($id);

    // décode le json pour qu'il se réaffiche en array pour pouvoir l'exploiter
    $json = json_decode($show->getContent());

    $json->followed = User::userFollowedPaginate($id);

    LaravelMixpanel::identify(Auth::user()->mixpanel_id);
    LaravelMixpanel::track('User show view');

    if(Request::ajax())
    {
        $html = View::make('users.show', $json)->render();

        return Response::json(['html' => $html]);
    }

    return View::make('users.show')
                ->with('user', $json);
}

My API/Controller :

public function show($id){

    // récupère donnée de l'user et les produits qu'il échange
    $data = User::with(array('products' => function($query){
                                                $query->whereNull('shared_at');
                                                $query->whereNull('deleted_at');
                                            }))->findOrFail($id)->toArray();

    // récupère le nb de produits qu'il échange en ce moment
    $data['nbShareCurrently'] = Product::where('user_id', $id)->whereNull('shared_at')->whereNull('deleted_at')->count();

    // récupère le nb de produits qu'il a échangé depuis le début
    $data['nbShared'] = Product::where('user_id', $id)->whereNotNull('shared_at')->count();

    return Response::json($data, 200);
}

My JS :

function callAjaxUser(url) {

    $.ajax ({
        type: "GET",
        url: url ,
        success: function() {
            console.log('Success ');   
        },
        error: function() {
            console.log('Error '); 
        }
    });
}



$(document).ready(function(){
    $('body').on('click', ' .pagination a ', function(event){
        event.preventDefault();
        var url=$(this).attr('href');
        callAjaxUser(url);
    });
});

And my view :

@extends('default')
@section('title')
    Fiche de {{ $user->name }}
@stop
@section('contenu')
    <section class="panel col-lg-8 col-sm-8 m-t-large">
        <header class="panel-heading m-l-n m-r-n">
            <ul class="nav nav-tabs pull-right">
                <li class="active"><a href="#product" data-toggle="tab"><i class="icon-list icon-large text-default"></i>Mes produits en cours de partage</a></li>
                <li><a href="#follow" data-toggle="tab"><i class="icon-group icon-large text-default"></i>Mes abonnés</a></li>
            </ul>
            <span class="hidden-sm">Fiche technique du frigo</span>
        </header>
        <div class="panel-body">
            <div class="tab-content">              
                <div class="tab-pane active" id="product">
                    <div class="col-lg-3">
                        {{-- dd($user) --}}
                        <h4>{{{ $user->name }}}</h4>
                        @if($user->photo && File::exists(public_path().'/uploads/photos/users/'.e($user->photo)))  
                            {{ HTML::image('uploads/photos/users/'.e($user->photo), e($user->name)) }}
                        @else
                             {{ HTML::image('template/images/avatar.jpg', e($user->name)) }}
                        @endif
                        @if($user->id!=Auth::user()->id)
                             @if(DB::table('user_followers')->where('user_followed', $user->id)->where('user_following', Auth::user()->id)->count()==0)
                                {{ HTML::decode(HTML::linkAction('UserFollowersController@follow', '<i class="icon-heart">S\'abonner</i>', array('id' => $user->id), array('class' => 'btn btn-info m-t-large m-b-small'))) }}
                            @else
                                {{ HTML::decode(HTML::linkAction('UserFollowersController@unfollow', '<i class="icon-heart">Se désabonner</i>', array('id' => $user->id), array('class' => 'btn btn-danger m-t-large m-b-small '))) }}
                            @endif
                        @endif
                    </div>
                    <div class="col-lg-9">
                        <h4>Le frigo contient en ce moment :</h4>
                            <ul class="list-unstyled">
                                @foreach($user->products as $product)
                                <li class="list-group-item bg m-b-small">
                                    <div class="media">
                                        @if(e($product->photo) && File::exists(public_path().'/uploads/photos/products/'.e($product->photo)))
                                            <span class="pull-left img-product"> 
                                                <a href="{{ URL::action('ProductsController@show', $product->id) }}">
                                                    {{ HTML::image('uploads/photos/products/'.e($product->photo), e($product->title), array('class' => 'img-rounded')) }}
                                                 </a>
                                            </span>
                                        @endif
                                        <div class="media-body">
                                            <div><a href="{{ URL::action('ProductsController@show', $product->id) }}" class="h4">{{{ $product->title }}}</a></div>
                                            <p>{{{ $product->description }}}</p>
                                            <p class="pull-left">Quantité :  <span class="label label-info">{{{ $product->quantity }}}</span></p>
                                            <p class="pull-right">Prix : <span class="badge bg-danger">{{{ $product->price }}} €</span></p>
                                        </div>
                                    </div>
                                </li>
                            @endforeach
                        </ul>
                        <div class="pagination">
                            {{-- $users->products->links() --}}
                        </div>
                    </div>
                </div>
                <div class="tab-pane" id="follow">
                    <div class="row m-b-large">
                        @if($user->followed!=NULL)
                            @foreach($user->followed as $user_followed)
                                <div class="panel col-lg-2 m-l-large m-t-large ">
                                    <div class="col-lg-8 m-b-n-small col-md-offset-2 m-t-large text-center">
                                        @if($user_followed->photo && File::exists(public_path().'/uploads/photos/users/'.e($user_followed->photo)))
                                            {{ HTML::image('uploads/photos/users/'.e($user_followed->photo), e($user_followed->name), array ( 'class' => 'img-circle')) }}
                                        @else
                                            {{ HTML::image('template/images/avatar.jpg', e($user_followed->name), array ( 'class' => 'img-circle')) }}
                                        @endif
                                        <h3>{{{ $user_followed->name }}}</h3>
                                    </div>
                                    <div class="col-lg-10 m-b-small center ">
                                        @if(DB::table('user_followers')->where('user_followed', $user_followed->id)->where('user_following', Auth::user()->id)->count()==0)
                                            {{ HTML::decode(HTML::linkAction('UserFollowersController@follow', '<i class="icon-heart">S\'abonner</i>', array('id' => $user_followed->id), array('class' => 'btn btn-info btn-group-justified m-t-large m-b-small'))) }}
                                        @else
                                            {{ HTML::decode(HTML::linkAction('UserFollowersController@unfollow', '<i class="icon-heart">Se désabonner</i>', array('id' => $user_followed->id), array('class' => 'btn btn-danger btn-group-justified m-t-large m-b-small '))) }}
                                        @endif
                                    </div>
                                </div>
                            @endforeach
                        @else
                            <div class="panel col-lg-8 col-lg-offset-2 m-t-large">
                                <h4> Tu ne suis actuellement personne </h4>
                            </div>
                        @endif
                    </div>    
                    <div class="col-lg-12">
                        {{ $user->followed->links() }}
                    </div>
                </div>
            </div>
        </div>
    </section>
@stop
@section('js')
    {{ Basset::show('usersPaginate.js') }}
@endsection

I stumbled upon this question because it is the first Google search result for laravel ErrorException, array_merge(): Argument #2 is not an array.

Even though the question is a year old, it is still relevant, because this happened to me in Laravel 5.0 today.

Without taking the time to digest all of your code, the problem is likely the same in your case as it was in mine: you are passing a non-array as the second argument to view::make() (whether intentionally or not) when you must pass an array.

The problem line is this one, in your controller:

$html = View::make('users.show', $json)->render();

Given that $json appears to be an object, the fix is simple:

$html = View::make('users.show', compact('json'))->render();

Hopefully, this answer will help somebody else in the future.