2017-03-16 75 views
0
數組

我試圖表現出協商這與使用Ajax和JSON symfony的數組的數組,這是我的AJAX的腳本:如何顯示使用Ajax和Symfony的

<script> 
    var boton=document.getElementById("form_Boton"); 
    function ajax() { 
     var nombre=$('#form_nombre').val(); 
     $.ajax({ 
      type: 'POST', 
      url: "{{ path('buscar_porCriterio') }}", 
      data: ({nombre: nombre}), 
      dataType:"json", 
      beforeSend:function() { 
       alert("enviará a: "+nombre); 
      }, 

      success:function (resp) { 
       if(resp!=""){ 
        $('#resultados').html(resp["nombre"]+" "+resp["apellido"]+" "+resp["residencia"]); 
       } 
       if(resp==""){ 
        alert("NO SE ENCONTRO NADA"); 
       } 


      } 
     }) 
    } 
    boton.addEventListener("click",ajax); 

</script> 

這是我的控制器:

public function PorCriterioAction(Request $request){ 
    if(!$request->isXmlHttpRequest()) 
    { 
     throw new Exception("Error, NO ES AJAX"); 
    } 
    $nombre=$request->request->get('nombre'); 
    $em=$this->getDoctrine()->getManager(); 
    $encontradas=$em->getRepository('FormulariosBundle:persona')->findBynombre($nombre); 
    if ($encontradas == null) { 
     $response = new Response("VACIO " . $nombre . " Sorry"); 
     return $response; 
    } 
    else{ 
     $persona_encontrada = (array("id" => $encontradas->getId(), 
      "nombre" => $encontradas->getNombre(), 
      "apellido" => $encontradas->getApellido(), 
      "residencia" => $encontradas->getResidencia() 
     )); 
     $response= new JsonResponse($persona_encontrada); 
     return $response;}} 

我需要的是從我的數據庫名字爲$ NOMBRE獲得的所有數據,並顯示在我的div「resultados」每一個數據。但。當我意識到我的搜索,symfony會告訴我這個異常: Exception

我的問題是:如何能做到的,每一個數據傳遞協商,以我的div「resultados」?

正如你所看到的,我想展示這樣的諮詢在一個div的編號是「resultados」,但不工作,你能幫我嗎?我在symfony中一個初學者,我不得不做出這個大學Proyect,並完成我的學習,感謝您的回答

編輯#2

這是改變我的控制器:

public function PorCriterioAction(Request $request){ 
    if(!$request->isXmlHttpRequest()) 
    { 
     throw new Exception("Error, NO ES AJAX"); 
    } 
    $nombre=$request->request->get('nombre'); 
    $em=$this->getDoctrine()->getManager(); 
    $encontradas=$em->getRepository('FormulariosBundle:persona')->findBynombre($nombre); 
    if ($encontradas == null) { 
     $response = new Response("VACIO " . $nombre . " Sorry"); 
     return $response; 
    } 
    else{ 
     foreach ($encontradas as $Item){ 
      $persona_encontrada = (array("id" => $Item->getId(), 
       "nombre" => $Item->getNombre(), 
       "apellido" => $Item->getApellido(), 
       "residencia" => $Item->getResidencia() 
      )); 
      array_push($persona_encontrada,$Item); 
     } 
      $response= new JsonResponse($persona_encontrada); 

     return $response; 
    } 
} 

這是你需要的嗎? responseText

+0

你不應該發佈你的代碼的圖像,而是你的實際代碼。如果您發佈圖片,您將得不到多少幫助。你可以在你的文章上點擊「編輯」並添加實際的代碼。瞭解如何正確格式化。 –

+0

我編輯了我的答案,請嘗試! –

+0

請參閱我的編輯#2部分。如果你認爲我能幫上忙,我可以讚揚我的意見,不勝感激。 –

回答

0

我相信$ encontradas被設定試試這個結果:

foreach($encontradas as $item){ 
    $persona_encontrada = (array(
     "id" => $item->getId(), 
     "nombre" => $item->getNombre(), 
     "apellido" => $item->getApellido(), 
     "residencia" => $item->getResidencia() 
    )); 
} 

讓我們知道結果。


編輯#2

我看到的問題。由於它遍歷數組,因此您希望$persona_encontrada是一個數組,然後使用PHP array_push向其添加數組元素。你可以做到這一點,像這樣:

$persona_encontrada = array(); 

foreach($encontradas as $item){ 
    $element = array(
     "id" => $item->getId(), 
     "nombre" => $item->getNombre(), 
     "apellido" => $item->getApellido(), 
     "residencia" => $item->getResidencia() 
    ); 

    array_push($persona_encontrada, $element); 
} 

順便說一句,雖然這會爲你工作,這可能不是這樣做的最佳方式。但它會起作用。

+0

你好阿爾文,我更新我的問題,我希望你能明白我需要什麼。謝謝! –

+0

令人驚歎!這是工作!非常感謝你!所以,我該如何將我的數組的每個元素傳遞給視圖?因爲剛剛到達數組的最後一個元素(因爲它爲整個數組傳遞) –

+0

請原諒,但我需要的方式來顯示我的div'resultados'中的每個數組項,當我做我的搜索,只顯示數組的最後一個元素。有沒有什麼辦法可以在我的div'resultados'中顯示數組的每個元素?有沒有辦法編輯「成功」的方法,我的變量「休息」獲取我的'響應'的每個元素? 你真的幫了我,但我真的需要這個最後的信息,謝謝 –