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

时间:2014-05-21 14:16:41

标签: php ajax twitter-bootstrap laravel array-merge

在我的用户页面中,我使用带有两个标签的div"产品"和#34;关注者",在第二个标签中,我是关注者列表的分页。 不返回选项卡"产品"当我尝试分页时,我用户调用Ajax。 但是当我尝试运行它时,我有一个错误500,并且get的响应是:

{"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}} 

我不知道为什么,我也不知道如何找到解决方案。

这是我的控制者:

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

我的API /控制器:

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

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

我的观点:

@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

1 个答案:

答案 0 :(得分:3)

我偶然发现了这个问题,因为它是result = MyObj.where({customer: current_id}) result.map{|customer| "full_name: #{customer.first_name + customer.last_name}" } 的第一个Google搜索结果。

即使问题是一年之久,它仍然具有相关性,因为今天在Laravel 5.0中发生了这种情况。

没有花时间来消化你的所有代码,你的情况可能与我的问题相同:你将一个非数组作为第二个参数传递给laravel ErrorException, array_merge(): Argument #2 is not an array(无论是有意还是你必须传递一个数组。

问题在于你的控制器:

view::make()

鉴于$html = View::make('users.show', $json)->render();似乎是一个对象,修复很简单:

$json

希望这个答案能在将来帮助其他人。