Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 代码使用静态PHP值,但不是动态变量_Javascript_Php_Ajax - Fatal编程技术网

Javascript 代码使用静态PHP值,但不是动态变量

Javascript 代码使用静态PHP值,但不是动态变量,javascript,php,ajax,Javascript,Php,Ajax,我正在尝试创建一个网站,在这里我创建了一个由SQL查询填充的下拉菜单,根据我所做的选择,将出现不同类型的下拉菜单 我现在在我的第二个下拉菜单上,如果我在其中硬编码某个值,它就可以工作,但是如果我尝试使用基于用户选择的动态值,它就不起作用 因为我需要弄清楚用户在选择什么,并在此基础上进行新的动态选择,所以我尝试使用javascript获取基于用户的信息。因为我对这个还很陌生,所以我尝试将信息保存到cookie中,然后用PHP读取它来创建一个新的列表,但这并没有按照我的预期工作。它没有刷新就没有更新

我正在尝试创建一个网站,在这里我创建了一个由SQL查询填充的下拉菜单,根据我所做的选择,将出现不同类型的下拉菜单

我现在在我的第二个下拉菜单上,如果我在其中硬编码某个值,它就可以工作,但是如果我尝试使用基于用户选择的动态值,它就不起作用

因为我需要弄清楚用户在选择什么,并在此基础上进行新的动态选择,所以我尝试使用javascript获取基于用户的信息。因为我对这个还很陌生,所以我尝试将信息保存到cookie中,然后用PHP读取它来创建一个新的列表,但这并没有按照我的预期工作。它没有刷新就没有更新页面,所以我继续搜索并找到了AJAX

有了它,我能够获得用户选择的下拉列表信息并将其发送回PHP,我需要这样做,因为我需要根据用户的选择运行一个新的SQL查询。这就是我完全没有想法的地方

当我使用AJAX并查看浏览器的控制台时,控制台中有一个新的下拉菜单,但它只是在网页$varClass=$\u POST['valitudKlass']上显示为一个空白下拉菜单;但是如果我手动设置$varClass,那么脚本工作得很好,并生成列表

这是我的功能,而不是每当用户在第一个下拉菜单中选择某个内容时运行。它应该获取当前所选下拉项的值并将其发送到pass.php

function valiKlass() {
    var valitudKlass = $("#klass option:selected").text();
    $.ajax({
        type: "POST",
        url: 'pass.php',
        data: {valitudKlass : valitudKlass},
        success:(function(data){
             console.log(data);
        })
    });
    $("#valiNimi").load("pass.php");
}
这是pass.php,它应该接收有关用户所选内容的信息,然后在此基础上发送一个新的SQL查询并生成一个新的下拉列表:

<?php
    require_once "config.php";
    echo "Vali nimi;";
    echo "<select name='nimi' id='nimi'>";
    $varClass = $_POST['valitudKlass'];
    $sql = "SELECT DISTINCT firstname FROM `students` WHERE class = '$varClass'"; 
    $result = mysqli_query($connection,$sql);

    while ($row = mysqli_fetch_array($result)){
        echo "<option value ='" . $row['firstname'] . "'>" . $row['firstname'] . "</option>";
    }
    echo "</select>";
?>
我过去只使用C语言编写代码,所以我对PHP和javascript都是全新的,几天前我学习了这两种语言是为了帮助我认识的一些人,但这个问题正在慢慢困扰着我。我想克服它,所以我感谢您能给我的任何帮助。

您的$。ajax调用会将值发送到服务器,而load调用不会。 只需将$.ajax的结果放在页面中并删除load调用


在回显变量之前,在变量中构建整个select

require_once "config.php";

$sendback = 'Vali nimi;<select name="nimi" id="nimi">';

$varClass = $_POST['valitudKlass'];
$sql = "SELECT DISTINCT firstname FROM `students` WHERE class = '$varClass'"; 
$result = mysqli_query($connection,$sql);

while ($row = mysqli_fetch_array($result)){
    $sendback .= "<option value ='" . $row['firstname'] . "'>" . $row['firstname'] . "</option>";
 }
 echo $sendback . '</select>';

在pass.php中,将select作为单个变量构建,并在select完全构建后进行回显。如果您查看浏览器控制台,您可能会看到调用pass.php返回的所有信息都是Vali nimi。此外,如果您是php新手,您肯定不想浪费时间学习mysqli。看看PHP PDO。
require_once "config.php";

$sendback = 'Vali nimi;<select name="nimi" id="nimi">';

$varClass = $_POST['valitudKlass'];
$sql = "SELECT DISTINCT firstname FROM `students` WHERE class = '$varClass'"; 
$result = mysqli_query($connection,$sql);

while ($row = mysqli_fetch_array($result)){
    $sendback .= "<option value ='" . $row['firstname'] . "'>" . $row['firstname'] . "</option>";
 }
 echo $sendback . '</select>';