尝试绑定输入继承其他输入

时间:2017-07-28 21:20:50

标签: php json ajax adminlte

我正试图通过一个输入来绑定其他输入,之前我做了一个例子,我在互联网上看到了解和练习,我做的例子很好,它填写了我问的所有数据,但当我尝试实现到我的项目这没有什么作用,在控制台中,不要给我一个错误或什么可以告诉我发生了什么 我正在使用PHP 7和Admin LTE的模板

这是我的表格

<form name="formulario" id="formulario" method="POST">
  <div class="form-group col-lg-6 col-md-6 col-sm-6 col-xs-12">
    <input type="hidden" name="idventa" id="idventa">
    <label>Numero de viaje:</label>
    <input type="text" class="form-control" name="num_viaje" id="num_viaje" maxlength="256" placeholder="Número de viaje" required>
  </div>
  <div class="form-group col-lg-6 col-md-6 col-sm-6 col-xs-12">
    <label>Cliente:</label>
    <input type="text" class="form-control" name="nombre" id="nombre" maxlength="256" placeholder="Cliente">
  </div>
  <div class="form-group col-lg-6 col-md-6 col-sm-6 col-xs-12">
    <label>Destino:</label>
    <input type="text" class="form-control" name="destino" id="destino" maxlength="256" placeholder="Destino">
  </div>
  <div class="form-group col-lg-6 col-md-6 col-sm-6 col-xs-12">
    <label>Operador:</label>
    <input type="text" class="form-control" name="operador" id="operador" maxlength="256" placeholder="Operador" required>
  </div>
  <div class="form-group col-lg-6 col-md-6 col-sm-6 col-xs-12">
    <label>Número de operador:</label>
    <input type="text" class="form-control" name="idoperador" id="idoperador" maxlength="256" placeholder="Numero de operador" required>
  </div>
  <div class="form-group col-lg-6 col-md-6 col-sm-6 col-xs-12">
    <label>Tipo de operación:</label>
    <input type="text" class="form-control" name="tipoOperacion" id="tipoOperacion" maxlength="256" placeholder="Tipo de operación" required>
  </div>
  <div class="form-group col-lg-6 col-md-6 col-sm-6 col-xs-12">
    <label>Viatico:</label>
    <input readonly type="text" class="form-control" name="viatico" id="viatico" maxlength="256" placeholder="Viatico" required onchange="sumar(this.value);">
  </div>
  <div class="form-group col-lg-6 col-md-6 col-sm-6 col-xs-12">
    <label>Caseta:</label>
    <input readonly type="text" class="form-control" name="casetas" id="casetas" maxlength="256" placeholder="Casetas" required onchange="sumar(this.value);">
  </div>
  <div class="form-group col-lg-6 col-md-6 col-sm-6 col-xs-12">
    <label>Extras:</label>
    <input readonly type="text" class="form-control" name="extras" id="extras" maxlength="256" placeholder="Extras" required onchange="sumar(this.value);">
  </div>
  <div class="form-group col-lg-6 col-md-6 col-sm-6 col-xs-12">
    <label>Cantidad en Diesel:</label>
    <input readonly type="text" class="form-control" name="diesel" id="diesel" maxlength="256" placeholder="Diesel" required onchange="sumar(this.value);">
  </div>
  <div class="form-group col-lg-6 col-md-6 col-sm-6 col-xs-12">
    <label>Desgaste 5%:</label>
    <input readonly type="text" class="form-control" name="desgaste" id="desgaste" maxlength="256" placeholder="Desgaste 5%" onchange="sumar(this.value);">
  </div>
  <div class="form-group col-lg-6 col-md-6 col-sm-6 col-xs-12">
    <label>Utilidad:</label>
    <input readonly type="text" class="form-control" name="utilidad" id="utilidad" maxlength="256" placeholder="Utilidad" onchange="sumar(this.value);">
  </div>
  <div class="form-group col-lg-6 col-md-6 col-sm-6 col-xs-12">
    <label>Inversión total:</label>
    <span id="spTotal"></span>
    <input readonly type="text" class="form-control" name="total" id="total" maxlength="256" placeholder="Total">
  </div>
  <div id="estado">Esperando input.</div>
  <div class="form-group col-lg-12 col-md-12 col-sm-12 col-xs-12">
    <button class="btn btn-primary" type="submit" id="btnGuardar"><i class="fa fa-save"></i> Guardar</button>

    <button class="btn btn-danger" onclick="cancelarform()" type="button"><i class="fa fa-arrow-circle-left"></i> Cancelar</button>
  </div>
</form>

我分开的页脚,我把

<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.js"></script>
<script type="text/javascript" src="scripts/relleno.js"></script>

relleno.php就是这些

$(function(){
   /* Ponemos evento blur a la escucha sobre id nombre en id cliente. */
   $('#cliente').on('blur','#nombre',function(){
      /* Obtenemos el valor del campo */
      var valor = this.value;
      /* Si la longitud del valor es mayor a 2 caracteres.. */
      if(valor.length>=3){

         /* Cambiamos el estado.. */
         $('#estado').html('Cargando datos de servidor...');

         /* Hacemos la consulta ajax */
         var consulta = $.ajax({
            type:'POST',
            url:'cliente.php',
            data:{nombre:valor},
            dataType:'JSON'
         });

         /* En caso de que se haya retornado bien.. */
         consulta.done(function(data){
            if(data.error!==undefined){
               $('#estado').html('Ha ocurrido un error: '+data.error);
               return false;
            } else {
               if(data.destino!==undefined){$('#nombre #destino').val(data.destino);}
               if(data.viatico!==undefined){$('#nombre #viatico').val(data.viatico);}
               if(data.casetas!==undefined){$('#nombre #casetas').val(data.casetas);}
               if(data.extras!==undefined){$('#nombre #extras').val(data.extras);}
               if(data.diesel!==undefined){$('#nombre #diesel').val(data.diesel);}
               if(data.desgaste!==undefined){$('#nombre #desgaste').val(data.desgaste);}
               if(data.utilidad!==undefined){$('#nombre #utilidad').val(data.utilidad);}
               if(data.total!==undefined){$('#nombre #total').val(data.total);}
               $('#estado').html('Datos cargados..');
               return true;
            }
         });

         /* Si la consulta ha fallado.. */
         consulta.fail(function(){
            $('#estado').html('Ha habido un error contactando el servidor.');
            return false;
         });

      } else {
         /* Mostrar error */
         $('#estado').html('El nombre tener una longitud mayor a 2 caracteres...');
         return false;
      }
   });
});

以及我在哪里搜索数据库的是这些cliente.php

<?php

/* Conectar a una base de datos de MySQL invocando al controlador */
$dsn = 'mysql:dbname=dbsistema;host=localhost';
$usuario = 'root';
$contraseña = '';

try {
    $gbd = new PDO($dsn, $usuario, $contraseña);
} catch (PDOException $e) {
    echo 'Falló la conexión: ' . $e->getMessage();
}

if(!empty($_POST['nombre'])){ 

$nombre = $_POST['nombre'];

$sql = "SELECT * FROM clientes WHERE nombre = '$nombre'";  
$stmt = $gbd->prepare($sql);
$stmt ->execute();
$arrDatos = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($arrDatos);
  if($arrDatos){
    foreach ($arrDatos as $row) {
      if ($nombre = $row['nombre']) {
        $return = array ('destino'=>$row['destino'],'viatico'=>$row['viatico'],'casetas'=>$row['casetas'],'extras'=>$row['extras'],'diesel'=>$row['diesel'], 'desgaste'=>$row['desgaste'],'utilidad'=>$row['utilidad'],'total'=>$row['total']);
      }      
    }
  } else {
    $return = array('error'=>'El nombre no esta guardado en la base de datos');
  }
  die(json_encode($return));
}

希望有人能帮助我找到我的错误

1 个答案:

答案 0 :(得分:0)

你的问题出现在$ .ajax功能上。作为数据,你给json语句提供了你没有定义的变量(或者我没有看到它)

data:{nombre:valor},

另一方面,您定义了dataType:json,但dataType json不是提交数据的类型,它是从此ajax调用返回的数据定义。也许,但我不确定atm,你应该对数据进行字符串化(JSON.strinfiy(yourJSONObject)),因为在数据上,你无法传递直接的JSON对象。即使您在使用$ _POST访问它之后也是如此。然后数据必须以&amp; field = value&amp; field = value&amp; field = value ....的形式传递。