现在我设法获得了随机的AJAX输出,下一步我想从数据库中获取一些有用的值。
再一次,我的 AJAX 调用看起来像这样(此外,我添加了一个 JSON 调用,这会更好)。
$.ajax({
url: "index.php",
data: "tx_myext_myplugin1[controller]=Mycontroller1&tx_myext_myplugin1[action]=ajax&type=89657201",
success: function(result) {
alert(result);
}
});
/*
var uri = '<f:uri.action action="ajax" controller="Mycontroller1" pageType="89657201" />';
jQuery.getJSON(uri, function(result) {
alert(result.c);
});
*/
我的 ajaxAction 函数:
public function ajaxAction() {
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
return json_encode($arr);
}
当我使用 JSON 调用时,这有效,现在我需要获取一个包含数据库值的数组。我认为使用 findAll() 函数调用存储库已经有所帮助,但我认为它不是一个数组,这就是我不能使用它的原因。一个不同的想法是使用我在模型中编写的 getValue 方法,但我不确定这是否有帮助。
免责声明:
通常使用 findAll() 方法可以是真实的performance killer
因此尝试编写自定义查找器,仅选择所需的属性,特别是如果您的模型很大或包含许多关系!
你已经足够接近了,因为你可以用json_encode()发送findAll()结果,但要小心,根据你的模型,从findAll创建的json可能非常大。最好迭代结果并仅重写为新数组所需的值。
$dataFromRepo = $this->yourRepository->findAll();
$resultArray = array();
foreach ($dataFromRepo as $object){
$resultArray[$object->getUid()] = $object->getTitle();
}
return json_encode($resultArray);
结果,您将获得基本的 JSON object
:
{
"1": "Title of first item",
"2": "Second item",
"3": "Et cetera"
}
何时从$resultArray
中删除自定义索引
foreach ($dataFromRepo as $object){
$resultArray[] = $object->getTitle();
}
你会得到 JSON array
[
"Title of first item",
"Second item",
"Et cetera"
]
等等。当然,您也可以multidimensional array
这种方式构建并发送更复杂的对象,以一次获得所需的一切。
附言:尝试始终使用示例 JsonLint - 在线验证器来验证您期望的输出是否有效。