【问题标题】:Receiving empty object from Ajax post request从 Ajax 发布请求接收空对象
【发布时间】:2017-03-22 04:09:13
【问题描述】:

我会尝试解释我的问题。我有一个实体,它与其他两个具有多对多关系的实体相连。我想要实现的是使用ajax post方法进行搜索,并接收连接表中连接的所有可能组合。

我真正的问题是,只有在第一个实体中搜索时,我才会收到有效的回调数据。

控制器:

if ($request->isXmlHttpRequest()) {


       $name = $request->request->get('person_name');
       /** @var EntityRepository $repository */
       $repository = $this->getDoctrine()->getManager()->getRepository('AppBundle:Connectors');
       $qb = $repository->createQueryBuilder('connectors')
           ->leftJoin('connectors.contacts', 'contacts')
           ->leftJoin('contacts.cables', 'cables');

       $qb->where('connectors.description LIKE :param');
       $qb->setParameter('param','%'.$name.'%');

       $connectors = [];
       $contacts = [];
       $cables = [];

       foreach ($qb->getQuery()->getResult() as $connector) {
           $connectors[] = $connector;
           foreach ($connector->getContacts() as $contact) {
               $contacts[] = $contact;
               foreach ($contact->getCable() as $cable) {
                   $cables[] = $cable;
               }
           }
       }

      // $Data = $qb->getQuery()->getArrayResult();
       return new JsonResponse(json_encode($contacts));
   }

此时我想发送我收到的 $contacts 数组是空的( NULL ),但更有趣的是 [{}, {}, {}, {}, {}] 大括号的数量是相同的数量我想收到的联系方式!!

如果注释行未注释并且 $Data 作为响应发送,则没有问题。

JS

$('#call_back_btn' ).click(function() {
                 $.post("/app_dev.php/AjaxSearch" ,
                     {
                     person_name:$('#input_text').val()
                     } ,
                     function (data)
                     {
                         console.log(data);
                          var obj =  JSON.parse(data);
                         console.log(obj);

                         // for (var key in data)
                         // {
                         //     if(data.hasOwnProperty(key)){
                         //         console.log(data);
                         //     }
                         // }

                     $('#resposeText').val(obj[1].description);

                     }
                 );
             })
            }
        );

感谢您的帮助

这是我的控制台输出:

【问题讨论】:

  • 你必须回显你想要返回的数据。@Metio_1993
  • 即使我回显数据,也没有任何反应
  • 你看过浏览器开发者工具中的AJAX请求/响应吗?您是否在项目中包含了 jQuery 库?是否报告了任何错误?你是在网络服务器上运行它吗?
  • 是的,我已经包含了 jQuery 库,不,没有错误,是的,我在浏览器上查看了所有响应,我可以看到我有一个发布请求和响应,但正如我提到的我一无所有!
  • 没人能回答吗?

标签: php ajax post symfony


【解决方案1】:

我已经设法找到了错误所在。

格式很麻烦,所以我安装了JMSSerializerBundle,然后将数据转换为JSON

$serializer = $this->container->get('serializer');
    $reports = $serializer->serialize($cables, 'json');
    $reports1 = $serializer->serialize($contacts, 'json');
    return new JsonResponse (array($reports1, $reports));

【讨论】:

    猜你喜欢
    • 2015-09-18
    • 2015-12-10
    • 1970-01-01
    • 2014-12-08
    • 2018-10-24
    • 2019-01-06
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多