通过AJAX将两个JSON模型对象从PHP传递到JS

通过AJAX将两个JSON模型对象从PHP传递到JS,php,jquery,mysql,ajax,laravel,Php,Jquery,Mysql,Ajax,Laravel,我用Laravel做一个相当简单的应用 我有一个控制器功能,工作得很好: if(Request::ajax()) { $joke = Joke::where('type', '=', 'kid')->get()->random(1); if (Session::has('joke')) { Session::forget('joke'); } Session::

我用Laravel做一个相当简单的应用

我有一个控制器功能,工作得很好:

    if(Request::ajax())
    {
        $joke = Joke::where('type', '=', 'kid')->get()->random(1);

        if (Session::has('joke'))
        {
            Session::forget('joke');
        }

        Session::put('joke', $joke);
        return Response::json($joke);
    }
但是,如果我将最后几行更改为:

Session::put('joke', $joke);
$user = $joke->user;
return Response::json([ 'joke' => $joke, 'user' => $user);
ajax调用成功,但我不能再在JS中使用$笑话或$user了

以下是ajax调用:

$.ajax({
        type: "POST",
        url: url,
        data: { rating: userRating },
        success: function(data){
            var textString = 'Thanks for rating! This little gems score is a sweet ' + data.joke.rating + '!';
            $('.jokeRating').html(textString);

        },
        error: function(){
            // load a message indicating it didnt work
            $('.jokeRating').html('It didnt work, sorry!');
        },
    });
我想补充的是

var authorString = '~' + data.user.name;
            $('.author').html(author);
雄辩的关系建立正确$笑话->用户肯定有效,正如我所说:

Route::get('/var', function()
{
$joke = Joke::find(1);
$user = $joke->user;
dd($user);
});
在routes.php中,它可以完美地实现


我在哪里绊倒了?

在返回用户和笑话对象之前,请尝试将它们转换为数组:

if(Request::ajax())
{
    $joke = Joke::where('type', '=', 'kid')->get()->random(1);

    if (Session::has('joke'))
    {
        Session::forget('joke');
    }

    Session::put('joke', $joke);
    return Response::json([ 'joke' => $joke->toArray(), 'user' => $user->toArray()]);
}

谢谢,这也与toJson方法类似。然而,它不允许我像我想的那样访问js中的变量。data.joke.joke或data.user.email中断脚本。如果我只显示'data.joke',它会同时显示JSON对象及其所有属性,如果我显示'data.user',它只是user JSON对象。在AJAX中获得成功后,我如何正确访问它呢?编辑:不用担心,它实际上适用于您的,但不适用于toJson。非常感谢你!