我已经在typo3上修复了ajax的问题。现在又出现了另一个问题。此时间与将操作中找到的对象返回到Javascript有关。所以我告诉你我到底做了什么。
这是我的第一个ajax调用函数:
function getContent(id)
{
console.log("Starting process ...");
$.ajax({
async: 'true',
url: 'index.php',
type: 'POST',
data: {
eID: "ajaxDispatcher",
request: {
pluginName: 'listapp',
controller: 'Pays',
action: 'getMyCompanys',
arguments: {
'id': id
}
}
},
dataType: "json",
success: function(result) {
var data = JSON.parse(result)
console.log(data.nom);
},
error: function(error) {
console.log(error);
}
});
}
这是" getMyCompanys"行动:
public function getMyCompanysAction()
{
$argument = $this->request->getArguments('id');
$company = $this->entrepriseRepository->findBypays(2); // just to test with the id 2
$result = (array) $company;
return json_encode($result);
}
现在在控制台上我得到了这个输出:
{"\u0000*\u0000dataMapper":{},"\u0000*\u0000persistenceManager":{},"\u0000*\u0000query":{},"\u0000*\u0000queryResult":null}
所以乍一看,我认为该对象没有传递给javascript,但当我尝试向对象$ company添加属性时($ company-> att =' val&#39 ;; )
我得到了这个输出:
{"\u0000*\u0000dataMapper":{},"\u0000*\u0000persistenceManager":{},"\u0000*\u0000query":{},"\u0000*\u0000queryResult":null**,"att":"val"}**
注意添加的属性及其值显示
所以我现在确信对象有问题。我也100%确定方法findBypays(2);工作,我在listAction中尝试过。
我真的不知道会出现什么问题:/
仅供参考:这是我使用JBuilder自行开发的typo3扩展的一部分
答案 0 :(得分:0)
$object->toArray() or (array) $object
到对象,所以我的解决方案是:
$companies = array();
foreach ($this->adresseRepository->findByland($id) as $company)
{
$companies[] = array(
'uid' => $company->getUid(),
'firma' => $company->getFirma(),
'strasse' => $company->getStrasse(),
'plz' => $company->getPlz(),
'ort' => $company->getOrt(),
'land' => $company->getLand(),
'telefon' => $company->getTelefon(),
'email' => $company->getEmail(),
'webseite' => $company->getWebseite()
);
}
return json_encode($companies);
和它工作;)