簡體   English   中英

symfony2中的單個Ajax

[英]Single Ajax in symfony2

我必須將ajax集成到我的proyect中,類似於google的搜索者。 我做了這樣的事情:

pedido.html.twig

/**... html code...
...
...
...**/

$(document).ready(function(){

            var consulta;


            $("#busqueda").focus();


            $("#busqueda").keyup(function(e){

                  //obtenemos el texto introducido en el campo de búsqueda
                  consulta = $("#busqueda").val();

                  //hace la búsqueda

                  $.ajax({
                        type: "POST",
                        url: "{{ path('buscar_productos') }}",
                        data: "b="+consulta,
                        dataType: "html",
                        error: function(){
                              alert("Error petición ajax");
                        },
                        success: function(data){                                                    
                              $("#busqueda").empty();
                              $("#busqueda").append(data);

                        }
                  });


            });

    });

PD:“ #busqueda”是我的輸入。

TablasController.php

public function buscarProductos(){
        $em = $this->getDoctrine()->getManager();
        $productos = $em->getRepository('ProyectoAdminBundle:Catalogo')->findAll;

        return $this->render('AtajoBundle:Ajax:buscarProductos.html.twig', array('productos' => $productos));
    }

buscarProductos.html.twig

<?php

      $buscar = $_POST['b'];

      if(!empty($buscar)) {
            buscar($buscar);
      }

      function buscar($b) {
            $con = mysql_connect('localhost','root', 'root');
            mysql_select_db('base_de_datos', $con);

            $sql = mysql_query("SELECT * FROM anuncios WHERE nombre LIKE '%".$b."%'",$con);

            $contar = mysql_num_rows($sql);

            if($contar == 0){
                  echo "No se han encontrado resultados para '<b>".$b."</b>'.";
            }else{
                  while($row=mysql_fetch_array($sql)){
                        $nombre = $row['nombre'];
                        $id = $row['id'];

                        echo $id." - ".$nombre."<br /><br />";    
                  }
            }
      }

?>

我的真正問題是,當我調用AJAX時,它將在整個控制器中查找“ buscarProductos.html.twig”的信息。 問題是我可以用php來做到(在我在php中做的例子中更多,但我放了.html.twig),驅動程序實際上執行了查詢並將其傳遞給模板。 我想知道是否“ SearchProducts”是我必須在樹枝上做的以及如何做,還是必須在php中做以及像我一樣呢。 如果我不明白,請原諒我是阿根廷人,我幾乎無法與您交流。 謝謝

首先, 使用mysql_connect :這是已經過時; 您應該始終使用教義。

AJAX調用應該調用url /products ,它應該是GET操作buscarProductosAction 您不需要buscarProductos.html.twig視圖,因為您可以在操作中執行以下操作:

<?php

// Namespace definition...

use Symfony\Component\HttpFoundation\JsonResponse;

// Controller class definition...

public function buscarProductosAction(){
    $em = $this->getDoctrine()->getManager();
    $productos = $em->getRepository('ProyectoAdminBundle:Catalogo')->findAll;

    return new JsonResponse(array('productos' => $productos));
}

查看有關JsonResponse類的官方文檔。

PS:在Twig文件中使用php代碼是完全錯誤的; 您應該閱讀並學習有關模板官方文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM