Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2与Ajax一起使用,以获取理论中的查询结果_Php_Jquery_Ajax_Symfony_Doctrine Orm - Fatal编程技术网

Php Symfony2与Ajax一起使用,以获取理论中的查询结果

Php Symfony2与Ajax一起使用,以获取理论中的查询结果,php,jquery,ajax,symfony,doctrine-orm,Php,Jquery,Ajax,Symfony,Doctrine Orm,更新 我在广告库中的作用 public function findByExceptOwner($paramFetcher) { $query = $this->getEntityManager()->createQueryBuilder('ad'); // parâmetros iniciais da query: status, departure de destination $query->select(

更新

我在广告库中的作用

    public function findByExceptOwner($paramFetcher)
    {

        $query = $this->getEntityManager()->createQueryBuilder('ad');

        // parâmetros iniciais da query: status, departure de destination
        $query->select('ad');

        if(array_key_exists('type', $paramFetcher)){
            $query->from('DelivveWebBundle:' . $paramFetcher['type'], 'ad');
        }else{
            $query->from('DelivveWebBundle:Ad', 'ad');
        }

        $query
            ->where('ad.owner <> :ownerId')
            ->andWhere($query->expr()->eq('ad.status', ':status'))
            ->andWhere('ad.dateFinal <= :today')
            ->setParameter('ownerId', $paramFetcher['ownerId'])
            ->setParameter('status', 'new')
            ->setParameter('today', new \DateTime("now"));

        if (array_key_exists('departure',$paramFetcher)) {
            $departureArray = preg_split('/ - /', $paramFetcher['departure']);
            $departureCityArray = preg_split('/,/', $departureArray[count($departureArray) - 2]);
            $departureUFArray = preg_split('/,/', $departureArray[count($departureArray) - 1]);
            $departure = $departureCityArray[count($departureCityArray) - 1] . ' - ' . $departureUFArray[0];
            $query
                ->andWhere($query->expr()->like('ad.departure', ':departure'))
                ->setParameter('departure', "%{$departure}%");
        }

        if (array_key_exists('destination',$paramFetcher)) {
            $destinationArray = preg_split('/ - /', $paramFetcher['destination']);
            $destinationCityArray = preg_split('/,/', $destinationArray[count($destinationArray) - 2]);
            $destinationUFArray = preg_split('/,/', $destinationArray[count($destinationArray) - 1]);
            $destination = $destinationCityArray[count($destinationCityArray) - 1] . ' - ' . $destinationUFArray[0];
            $query
                ->andWhere($query->expr()->like('ad.destination', ':destination'))
                ->setParameter('destination', "%{$destination}%");
        }

        // raio de busca com centro nas coordenadas de departure
        if (array_key_exists('departure_latitude', $paramFetcher) && array_key_exists('departure_longitude', $paramFetcher) && array_key_exists('radius', $paramFetcher)) {
            $query
                ->andWhere('earth_distance_operator(earth_box(ll_to_earth(:departure_lat, :departure_lon), :radius), \'@>\', ll_to_earth(ad.departureLatitude, ad.departureLongitude)) = true')
                ->setParameter('departure_lat', floatval($paramFetcher['departure_latitude']), \Doctrine\DBAL\Types\Type::FLOAT)
                ->setParameter('departure_lon', floatval($paramFetcher['departure_longitude']), \Doctrine\DBAL\Types\Type::FLOAT)
                ->setParameter('radius', floatval($paramFetcher['radius']) / 1.609, \Doctrine\DBAL\Types\Type::FLOAT);
        }

        // raio de busca com centro nas coordenadas de destionation
        if (array_key_exists('destination_latitude', $paramFetcher) && array_key_exists('destination_longitude', $paramFetcher) && array_key_exists('radius', $paramFetcher)) {
            $query
                ->andWhere('earth_distance_operator(earth_box(ll_to_earth(:destination_lat, :destination_lon), :radius), \'@>\', ll_to_earth(ad.destinationLatitude, ad.destinationLongitude)) = true')
                ->setParameter('destination_lat', floatval($paramFetcher['destination_latitude']), \Doctrine\DBAL\Types\Type::FLOAT)
                ->setParameter('destination_lon', floatval($paramFetcher['destination_longitude']), \Doctrine\DBAL\Types\Type::FLOAT)
                ->setParameter('radius', floatval($paramFetcher['radius']) / 1.609, \Doctrine\DBAL\Types\Type::FLOAT);
        }

        return $query->getQuery()->getResult();
    }
我的路线是这样写的

search_ads:
pattern: /ad/search
defaults: { _controller: DelivveWebBundle:Ad:searchAds }
我的函数是ajax

$(window).load(function() {
        var url = window.location.href;
        var urlArray = url.split("/");
        var path = urlArray[0]+"//"+urlArray[2];

        var departureLatitude = $("#bundle_ad_departureLatitude").val();
        var departureLongitude = $("#bundle_ad_departureLongitude").val();

        $.post(path+"{{ path('search_ads') }}",
            {departure_lat: departureLatitude, departure_long: departureLongitude},
            function (entities){
                alert("success ");
                console.log(entities);

                $(".panel-foot-information").remove();

                $div = "<div class='panel-foot-information row big-not-visible'>";

                 if (entities != null){
                 $div = $div + "<table id='ads'><thead><tr><th>Departure</th><th>Destination</th></tr></thead><tbody>";
                 $.each( entities, function( key, value ) {
                     $div = $div + "<tr class='ad-tr'>";
                     $div = $div + "<td class='hidden'><input type='hidden' id='idLat' value="+ value.departureLatitude +"/></td>";
                     $div = $div + "<td class='hidden'><input type='hidden' id='idLong' value="+ value.departureLongitude +"/></td>";
                     $div = $div + "<td>"+ value.owner.username +"</td>";
                     $div = $div + "<td>"+ value.departure +"</td>";
                     $div = $div + "<td>"+ value.destination +"</td>";
                     $div = $div + "<td class='packageType'>"+ value.packageType +"</td>";
                     $div = $div + "<td class='transportation'>"+ value.transportation +"</td>";
                     $div = $div + "<td class='price'>"+ value.price +"</td>";
                     $div = $div + "<td class='date'>"+ value.date + " - " + value.dateFinal +"</td>";
                     $div = $div + "</tr>";
                     alert($div)
                 });
                 $div = $div + "</tbody></table></div>";
                 }
                 $div = $div + "</div>";
                 $(".panel-middle").append($div);
            }, "json"
        );
    });
$(窗口).load(函数(){
var url=window.location.href;
var urlArray=url.split(“/”);
var path=urlArray[0]+“/”+urlArray[2];
var departureLatitude=$(“#bundle_ad_departureLatitude”).val();
var departureLongitude=$(“#bundle_ad_departureLongitude”).val();
$.post(路径+“{{path('search_ads')}}}”,
{出发时间:出发纬度,出发时间:出发经度},
职能(实体){
警惕(“成功”);
控制台日志(实体);
$(“.panel foot information”).remove();
$div=“”;
if(实体!=null){
$div=$div+“出发目的地”;
$.each(实体、功能(键、值){
$div=$div+“”;
$div=$div+“”;
$div=$div+“”;
$div=$div+“”+value.owner.username+“”;
$div=$div+“”+value.department+“”;
$div=$div+“”+value.destination+“”;
$div=$div+“”+value.packageType+“”;
$div=$div+“”+value.transportation+“”;
$div=$div+“”+value.price+“”;
$div=$div+“”+value.date+“”-“+value.dateFinal+”;
$div=$div+“”;
警报($div)
});
$div=$div+“”;
}
$div=$div+“”;
$(“.panel middle”)。追加($div);
},“json”
);
});
我尝试了另一种解决方案,以帮助那些看到我之前的问题的人

在stackoverflow中的几个人进行了大量的搜索和怀疑后,我发现他可能会找到它,但当我回到ajax时,他有一张对象类型的照片,这毫无意义


有人知道怎么做吗?

错误在于JasonResponse无法序列化我的类,然后操纵它在jQuery中对结果进行迭代

public function searchAdsAction(Request $request)
{
    ...
    $data = array();
    foreach($entities as $ad){
        $adArray = array();
        $adArray["departureLatitude"] = $ad->getDepartureLatitude();
        $adArray["departureLongitude"] = $ad->getDepartureLongitude();
        $adArray["owner_username"] = $ad->getOwner()->getUserName();
        $adArray["departure"] = $ad->getDeparture();
        $adArray["destination"] = $ad->getDestination();
        $adArray["packageType"] = $ad->getPackageType();
        $adArray["price"] = $ad->getPrice();
        $data[] = $adArray;
    }

    return new JsonResponse($data);
}

直接在浏览器中打开该页面并检查日志,以查看是什么触发了500错误。您可以从问题中删除AJAX代码,因为它似乎与500错误无关。在将输出与AJAX一起使用之前,请检查控制器是否工作。很抱歉,我不理解您的评论。如果您的AJAX因为500错误而无法工作,请在继续之前修复它。谢谢!你的帖子帮助了我!
public function searchAdsAction(Request $request)
{
    ...
    $data = array();
    foreach($entities as $ad){
        $adArray = array();
        $adArray["departureLatitude"] = $ad->getDepartureLatitude();
        $adArray["departureLongitude"] = $ad->getDepartureLongitude();
        $adArray["owner_username"] = $ad->getOwner()->getUserName();
        $adArray["departure"] = $ad->getDeparture();
        $adArray["destination"] = $ad->getDestination();
        $adArray["packageType"] = $ad->getPackageType();
        $adArray["price"] = $ad->getPrice();
        $data[] = $adArray;
    }

    return new JsonResponse($data);
}