[英]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類的官方文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.