在Laravel中,我有一个Eloquent Model Person
和一个函数getSomestringFromPerson()
,它在Model Person上运行并返回一个字符串。现在我有一个AJAX请求,其响应是人员的集合。直到这里,我知道该怎么做。
现在,我想在JavaScript中为响应中的每个getSomestringFromPerson()
显示Person
的结果。
那可能吗?如果有,怎么样?或者我是否必须在Controller中运行该函数并将结果包含在AJAX响应中? (这对我来说看起来有点麻烦......)
答案 0 :(得分:3)
在处理AJAX请求的控制器中,我假设它获得了People
的集合,就像这样(至少是这样):
public function handleAjax(Request $request){
$people = People::get();
return response()->json(["people" => $people], 200);
}
然后在你的JS中有一个处理响应的函数:
$.get(URL, function(data){
console.log(data); // Collection (js object) of `People` models.
});
在handleAjax
功能中,您可以遍历每个People
并分配一个属性以保存$person->getSomestringFromPerson()
的值:
foreach($people AS $person){
$person->someString = $person->getSomestringFromPerson();
}
然后,在您的Javascript
代码中,您可以像这样访问它:
for(var person in data.people){
console.log(data.people[person].someString); // Should return the expected value of `$person->getSomestringFromPerson();` as defined in your function.
}
从那里开始,你应该能够做你需要做的任何其他事情。{/ 1}}对象。