Обновить параметры таблицы, когда пользователь более конкретно заполняет ввод - PullRequest
0 голосов
/ 07 ноября 2018

Я сейчас работаю в системе POS. Моя цель состоит в том, что, поскольку входные данные обновляются с помощью «keyup», результаты, которые соответствуют этому keyup, отображаются в таблице.

Примерно так:

Пример

Я думаю, что я завершил код, просто отсутствует, чтобы отобразить результаты в таблице. Это мой настоящий код JS:

$(document).ready(function(){

 $("tablaClientesEnVenta").dataTable({
  bFilter: false, bInfo: false
 });

$("#inputNombreCliente").on('keyup', function(){

$("#tablaClientesEnVenta").css("visibility", "visible");
if (!$("#inputNombreCliente").val()){
  $("#tablaClientesEnVenta").css("visibility", "hidden");
}
console.log("tecla detectada");
var nombreCliente = $(this).val();
console.log(nombreCliente);
var datos = new FormData();
datos.append("nombreCliente", nombreCliente);

$.ajax({
  url:'ajax/crear-venta.ajax.php',
  method: "POST",
  data: datos,
  cache: false,
  contentType: false,
  processData: false,
  dataType: 'json',
  success:function(respuesta){
    console.log(respuesta);
}
  });

});
});

Это мой код AJAX для вызова функции:

<?php
  require_once '../controladores/clientes.controlador.php';
  require_once '../modelos/clientes.modelo.php';

  class AjaxVentas{
   public $nombreCliente;
   public function ajaxNombreCliente(){
    $item = "nombre";
    $valor = $this->nombreCliente;
    $respuesta = ControladorClientes::ctrMostrarAjaxClientes($item, 
    $valor);

    echo json_encode($respuesta);
 }
}

 if (isset($_POST['nombreCliente'])) {
  $cliente = new AjaxVentas();
  $cliente -> nombreCliente = $_POST['nombreCliente'];
  $cliente -> ajaxNombreCliente();
 }

Эта функция вызывает модель:

  static public function ctrMostrarAjaxClientes($item, $valor){
   $tabla = "clientes";
   $respuesta = ModeloClientes::mdlMostrarAjaxClientes($tabla, $item, 
   $valor);
   return $respuesta;
  }

Наконец, функция, которая вызывает данные из БД:

 static public function mdlMostrarAjaxClientes($tabla, $item, $valor){
  $statement = Conexion::conectar()->prepare("SELECT * FROM $tabla 
  WHERE $item = :item");
  $statement->execute(array(":item" => $valor));
  return $statement->fetchAll();
 }

В заключение я хотел бы знать, чего мне не хватает, поскольку console.log(respuesta) в JS дает мне ошибку. Спасибо и хорошего дня!

1 Ответ

0 голосов
/ 07 ноября 2018

в вашем классе AjaxVentas;

ControladorClientes::mdlMostrarAjaxClientes($item, $valor);

Статическому методу требуется 3 аргумента ($ table, $ item, $ valor), а не два ($ item, $ valor) переданные выше

Отредактировано

Conexion::conectar()->prepare("SELECT * FROM $tabla WHERE $item = :item");

Имя таблицы не передается

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...