【问题标题】:Retrieve Eloquent Model function in JavaScript在 JavaScript 中检索 Eloquent 模型函数
【发布时间】:2017-07-07 13:37:22
【问题描述】:

在 Laravel 中,我有一个 Eloquent Model Person 和一个函数 getSomestringFromPerson(),它在 Model Person 上运行并返回一个字符串。现在我有一个 AJAX 请求,其响应是一组人员。到这里我才知道该怎么做。

现在,我想在 JavaScript 中为响应中的每个 Person 显示 getSomestringFromPerson() 的结果。 那可能吗?如果是,如何?还是我必须在控制器中运行该函数并将结果包含在 AJAX 响应中? (这对我来说看起来有点麻烦......)

【问题讨论】:

  • getSomestringFromPerson() 是做什么的?
  • @jackel414 "函数 getSomestringFromPerson() 对模型人进行操作并返回一个字符串" 它做到了:P
  • @TimLewis 哈哈,很公平。我试图弄清楚它是在操作数据还是只是解析一个字符串(这在 JS 中很容易做到),但我认为这可能无关紧要。

标签: javascript ajax laravel eloquent


【解决方案1】:

在处理 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.
}

从那里,您应该能够对您的 data.people 对象执行您需要执行的任何其他操作。

【讨论】:

  • 好的。这就是我所说的“在控制器中运行函数并将结果包含在 AJAX 响应中”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-20
  • 2014-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-11
  • 1970-01-01
相关资源
最近更新 更多