无法读取JS值/将其传递给PHP中的服务器

时间:2019-03-02 17:41:11

标签: javascript php ajax

我正在DropDown中从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 && 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 个答案:

答案 0 :(得分:0)

您的$ _GET变量应为$_GET['q']而不是$_GET['data'],因为您将URL设置为test.php?q=data

此外,由于存在SQL注入的风险,因此您不应将原始用户提供的数据放入SQL查询,而应使用prepared statement