通过 AJAX 将两个 JSON 模型对象从 PHP 传递到 JS
Posted
技术标签:
【中文标题】通过 AJAX 将两个 JSON 模型对象从 PHP 传递到 JS【英文标题】:passing two JSON model objects from PHP to JS via AJAX 【发布时间】:2014-12-26 23:01:31 【问题描述】:我正在使用 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->user 确实有效,正如我所说:
Route::get('/var', function()
$joke = Joke::find(1);
$user = $joke->user;
dd($user);
);
在 routes.php 中,它完美地通过了。
我在哪里绊倒了?
【问题讨论】:
【参考方案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()]);
【讨论】:
谢谢,这也像 toJson 方法一样工作。但是,它不会让我像我想要的那样访问我在 js 中的变量。 data.joke.joke 或 data.user.email 破坏脚本。如果我只显示“data.joke”,则它带有 JSON 对象及其所有属性,如果我显示“data.user”,它只是用户 JSON 对象。我如何在 AJAX 中成功访问它? edit:没关系,它实际上适用于您的,但不适用于 toJson。非常感谢!以上是关于通过 AJAX 将两个 JSON 模型对象从 PHP 传递到 JS的主要内容,如果未能解决你的问题,请参考以下文章
通过jquery ajax将json对象传递给webmethod
在 node.js 的帮助下在服务器上运行 three.js,将模型导出为 json 并通过 ajax 加载给最终用户
Ajax 将带有两个数组的 JSON 对象发送到一个 servlet 并在没有 jQuery 的情况下在 java servlet 中解析