AJAX - Ошибка вызова двух функций внутри одного события onchange - PullRequest
1 голос
/ 21 марта 2020

Я пытаюсь получить две вещи из базы данных через AJAX, изображение и цену продукта, с функцией, содержащей две функции внутри себя в одном onchange событии.

После многих попыток и Ошибки Я, наконец, перестал получать ошибки в консоли, но теперь, даже несмотря на то, что я не получаю ошибок, две вещи, которые мне требуются через AJAX, не появляются.

У меня закончились идеи, и я не получил сообщений об ошибках, оставив меня на плаву.

Функция AJAX в <head>:

<script type="text/javascript">
    function seleccionProd(str) {

        function precioProd(str) {
            if (str=="") {
                document.getElementById("precio").innerHTML="";
                return;
            }
            if (window.XMLHttpRequest) {
                var xmlhttp = new XMLHttpRequest();
            }
            xmlhttp.onreadystatechange = function() {
              if (this.readyState == 4 && this.status == 200) {
                document.getElementById("precio").innerHTML = this.responseText;
                document.getElementById("precioOculto").value = this.responseText;
              }
            };
            xmlhttp.open("GET", "precio.php?q="+str, true);
            xmlhttp.send();
        }

        function imagenProd(str) {
            if (str=="") {
                document.getElementById("imagen").innerHTML="";
                return;
            }
            if (window.XMLHttpRequest) {
                var xmlhttp = new XMLHttpRequest();
            }
            xmlhttp.onreadystatechange = function() {
              if (this.readyState == 4 && this.status == 200) {
                document.getElementById("imagen").innerHTML = this.responseText;
              }
            };
            xmlhttp.open("GET", "seleccion_prod_compra_imagen.php?q="+str, true);
            xmlhttp.send();
        }
    }
</script>

Элемент <select>:

<select class="custom-select my-1 mr-sm-2" id="producto" name="producto" onchange="seleccionProd(this.value);" required>

Два файла PHP, вызываемые внутри AJAX функция:

precio. php

<?php 
require $_SERVER['DOCUMENT_ROOT'].'/php/db_key.php';

$con = mysqli_connect($servername, $username, $password, $dbname);

$q = $_GET["q"];

$sql = "SELECT precio FROM productos WHERE titulo = '".$q."'";

$result = mysqli_query($con, $sql);

while($row = mysqli_fetch_array($result)) {
    echo $row['precio'];
}
?>

seleccion_prod_compra_imagen. php. php

<?php 
require $_SERVER['DOCUMENT_ROOT'].'/php/db_key.php';

$con = mysqli_connect($servername, $username, $password, $dbname);

$q = $_GET["q"];

$sql = "SELECT imagen FROM productos WHERE titulo = '".$q."'";

$result = mysqli_query($con, $sql);

while($row = mysqli_fetch_array($result)) {
    echo '<img src="/img/productos/'.$row['imagen'].'" class="card-img-top fluid">';
}
?>

Как всегда, любая помощь очень признателен и спасибо за ваше время.

1 Ответ

1 голос
/ 21 марта 2020

Вы определяете precioProd и imagenProd, но никогда не вызываете их.

function seleccionProd(str) {
    precioProd(str);
    imagenProd(str);

    function precioProd(str) {
        if (str=="") {
            document.getElementById("precio").innerHTML="";
            return;
        }
        if (window.XMLHttpRequest) {
            var xmlhttp = new XMLHttpRequest();
        }
        xmlhttp.onreadystatechange = function() {
          if (this.readyState == 4 && this.status == 200) {
            document.getElementById("precio").innerHTML = this.responseText;
            document.getElementById("precioOculto").value = this.responseText;
          }
        };
        xmlhttp.open("GET", "precio.php?q="+str, true);
        xmlhttp.send();
    }

    function imagenProd(str) {
        if (str=="") {
            document.getElementById("imagen").innerHTML="";
            return;
        }
        if (window.XMLHttpRequest) {
            var xmlhttp = new XMLHttpRequest();
        }
        xmlhttp.onreadystatechange = function() {
          if (this.readyState == 4 && this.status == 200) {
            document.getElementById("imagen").innerHTML = this.responseText;
          }
        };
        xmlhttp.open("GET", "seleccion_prod_compra_imagen.php?q="+str, true);
        xmlhttp.send();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...