Не удается прочитать / передать значение JS на сервер в PHP

#javascript #php #ajax

#javascript #php #ajax

Вопрос:

Я извлекаю значение из Mysql в выпадающем списке. Таблица должна быть заполнена на основе пользовательского выбора. Но что бы я ни выбирал в выпадающем списке, оно не отправляется на сервер.

Пожалуйста, найдите приведенный ниже код:

Извлеките значение из выпадающего списка

 <?php 
                    $result = mysqli_query($con, "SELECT name FROM restaurants;");
                    echo "<select name='sub1' id='resdropdown' onchange = 'showMenu(this.value)'>";
                    while ($row = mysqli_fetch_array($result)){
                        echo "<option value='" . $row['name'] ."'>" . $row['name'] . "</option>";
                    }
                    echo "</select>";
    ?>
  

Скрипт для отправки значения на сервер

 function showMenu(str) {
     /* var x = document.getElementById('resdropdown');
        str = x.value;
        alert(str);  */
        var ajax = new XMLHttpRequest();
        var method = "GET";

        var asynchronous = true;
        var data = str;

        ajax.open(method, "test.php?q=" data, asynchronous);

        //sending ajax request
        ajax.send();


        ajax.onreadystatechange = function() {
            if (this.readyState == 4 amp;amp; this.status == 200) {
                document.getElementById("testajaxid").innerHTML = this.responseText;
                alert(str);
            }
        };

    } 
  

Получить ответ от сервера

         $q = $_GET['data'];

        $result = mysqli_query($con, "SELECT * FROM items where  id = '".$q."'");


        while($row = mysqli_fetch_array($result))
        {
            echo '<tr><td>'.$row["name"].'</td><td>'.$row["price"].'</td>';                      
            echo '<td><div class="input-field col s12"><label for='.$row["id"].' class="">Quantity</label>';
            echo '<input id="'.$row["id"].'" name="'.$row['id'].'" type="text" data-error=".errorTxt'.$row["id"].'"><div class="errorTxt'.$row["id"].'"></div></td></tr>';
        }
  

Комментарии:

1. "test.php?q=" data => $q = $_GET['data']; не будет работать Этот вопрос был вызван проблемой, которая больше не может быть воспроизведена, или простой типографской ошибкой. Хотя подобные вопросы могут быть здесь по теме, этот был решен способом, который вряд ли поможет будущим читателям.

Ответ №1:

Ваша переменная $_GET должна быть $_GET['q'] вместо $_GET['data'] , потому что вы установили URL на test.php?q=data .

Кроме того, вы не должны помещать необработанные данные, предоставленные пользователем, в SQL-запросы, используйте вместо этого подготовленную инструкцию из-за риска внедрения SQL.