2017-04-19 10 views
0

동적으로 테이블을 채우는 중이고 컨트롤러에서 JSON 값을 연결하거나 값을 삽입하려고 할 때 막혔습니다. 이미지를 표시해야하므로이 값을 삽입하고 싶습니다. JSON에서 오는 경로가있는 HTML 태그를 삽입합니다. 여기 내 코드가있다. 쿼리 3 개 배열을 얻고 나는 id를 인쇄하면JSON 값을 AJAX 응답에 삽입하십시오.

컨트롤러

public function consultaProd2(Request $request) 
{ 
    $almacenes = Almacen::orderBy('nombre')->lists('nombre', 'id'); 
    $fechas = explode(' ', $request['RangoFecha']); 
    $fechaInicial = $fechas[0].' 00:00:00'; 
    $fechaFinal = $fechas[2].' 23:59:59'; 

    $productos = Producto::whereBetween('created_at', [$fechaInicial, $fechaFinal]) 
        ->where('almacen_id', '=', $request['Almacen']) 
        ->get(); 
    return response()->json($productos); 
} 

스크립트

<script type="text/javascript"> 
 
    function llenar(response, index, value) 
 
    { 
 
     $('#example1').DataTable({ 
 
      "destroy": true, 
 
      "data": response, 
 
      "scrollX": true, 
 
      "columns":[ 
 
       {"data":"img"}, 
 
       {"data":"id"}, 
 
      ] 
 

 
     }); 
 
    } 
 
</script> 
 

 
<script type="text/javascript"> 
 
    function consultaProducto(){ 
 
     var tablaDatos = $('#datos'); 
 
     var token = $("#token").val(); 
 
     var route = '<?= url('producto/consultaProducto') ?>' 
 
     var data = {}; 
 
     data.Almacen = $('select[name=Almacen]').val(); 
 
     data.RangoFecha = $('input[name=RangoFecha]').val(); 
 
       $.ajax({ 
 
        url: route, 
 
        headers: {'X-CSRF-TOKEN': token}, 
 
        data: data, 
 
        method: 'POST', 
 
        statusCode: { 
 
         400: function() { 
 
         } 
 
        } 
 
       }).done(function(response){ 
 
        $.each(response, function(index, value){ 
 
         if(response[index].pathImg == null) 
 
          var img = "/documento/valach/noimg.png"; 
 
         else 
 
          var img = response[index].pathImg; 
 
         var img = "/documento/valach/noimg.png"; 
 
         response[index].img = "<img src="+img+">"; 
 
         //console.log(response); 
 
         llenar(response, index, value); 
 
        }); 
 

 
       }).fail(function(response){ 
 
       }); 
 
      } 
 
     } 
 
     return false; 
 
    }

예를 들어, 그것은 단지 정보 재치를 보여줍니다 hout 어떤 에러라도, 내가 삽입 한 값인 data:img을 사용하면 테이블을 채우고 이미지를 보여준 후에 다음과 같은 에러가 발생합니다. 정보가 도착하는대로 난 단지 쿼리에 1 개 배열을 얻을 경우

Error image here

및 행이 증가하지만, 어떤 오류없이 테이블을 채 웁니다. 고마워요, 고마워요.

답변

0

루프 내부에 llenar()을 호출합니다. 즉 반복 할 때마다 한 번씩 호출합니다. 루프가 끝나면 호출해야합니다. 그리고 당신은 (또는 다른 사람들이) 3 주안에 코드를 재투자 할 때 혼란을 피하기 위해 실제로는 { }을 사용해야합니다.

$.each(response, function(index, value){ 
    var img; 
    if (response[index].pathImg == null) { 
    img = "/documento/valach/noimg.png"; 
    } else { 
    img = response[index].pathImg; 
    } 
    //var img = "/documento/valach/noimg.png"; ??? 
    response[index].img = "<img src="+img+">"; 
}); 
llenar(response, index, value); 
관련 문제