我使用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中使用$ joke或$ 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);
雄辩的关系设置正确。 $ joke->用户绝对有效,正如我所说:
Route::get('/var', function()
{
$joke = Joke::find(1);
$user = $joke->user;
dd($user);
});
在routes.php中,它完美无缺。
我在哪里绊倒?
答案 0 :(得分:1)
尝试在返回之前将User和Joke对象转换为数组:
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()]);
}