我的代码中的一个谜

时间:2014-12-05 10:46:59

标签: javascript json object typo3

我已经在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扩展的一部分

1 个答案:

答案 0 :(得分:0)

经过很长一段时间的挣扎之后,我尝试了一个技巧,它起作用了,它证明了json_encode在typo3中没有返回一个对象,尽管我应用了:

$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);

和它工作;)