Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.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
通过Ajax PHP动态加载下拉选择_Php_Mysql_Ajax_Forms_Drop Down Menu - Fatal编程技术网

通过Ajax PHP动态加载下拉选择

通过Ajax PHP动态加载下拉选择,php,mysql,ajax,forms,drop-down-menu,Php,Mysql,Ajax,Forms,Drop Down Menu,我有一个表单目前处于在线状态,并且可以正常工作——昨天的大部分时间我都在为我的第一组下拉框搜索并实现AJAX解决方案。但是我想在表单中添加一组额外的三个下拉选择框。前两个没什么大不了的。它们已经添加到表单中,并且在表单初始加载时从两个MYSQL表动态生成 然而,第三个下拉列表被证明有点棘手 我在表单上已经有一组下拉列表,它们是在一个多步骤过程中动态生成的(即,选择第一个下拉列表,然后通过AJAX在第二个下拉列表中加载列表,选择第二个下拉列表,然后根据该输入通过AJAX在第三个下拉列表中动态加载列

我有一个表单目前处于在线状态,并且可以正常工作——昨天的大部分时间我都在为我的第一组下拉框搜索并实现AJAX解决方案。但是我想在表单中添加一组额外的三个下拉选择框。前两个没什么大不了的。它们已经添加到表单中,并且在表单初始加载时从两个MYSQL表动态生成

然而,第三个下拉列表被证明有点棘手

我在表单上已经有一组下拉列表,它们是在一个多步骤过程中动态生成的(即,选择第一个下拉列表,然后通过AJAX在第二个下拉列表中加载列表,选择第二个下拉列表,然后根据该输入通过AJAX在第三个下拉列表中动态加载列表)

这工作得很好。但是,我没有编写代码,也不能完全了解它的工作细节。我非常了解php,但AJAX的内容让我感到困惑,这是我在新的下拉列表中需要了解的部分

在这组新的下拉列表中,第二个列表不依赖于第一个列表。第一个和第二个列表都是在页面加载时加载的。只有第三个下拉列表必须通过AJAX加载,但在这种情况下,它取决于第一个和第二个选择

因此,换句话说,用户先进行第一次选择,然后再进行第二次选择(这不依赖于第一次选择)。但是,在进行第二次选择后,第三个下拉列表将根据对第一个和第二个列表所做的选择进行AJAX填充

我不知道怎么做

下面是我当前的代码。虽然有点长,但我不知道是否有可能构建现有的AJAX和PHP函数来最小化新代码。此外,我不知道是否有任何新代码可能与旧代码冲突,因此在下面提供

我知道这是一个相对较高的要求(至少在我看来是这样),但我真的需要完成这个表单,我整天都在做这个实现,似乎无法理解AJAX代码来完成它

以下是我当前的代码(没有很多额外的格式代码):



  • 车辆品牌* (根据上述选择,留出加载时间)
  • 车辆型号* (根据上述选择,留出加载时间)

  • 好的,我注意到的第一件事是您没有检查“onstatechange”函数的状态。应该在readyState检查中添加以下内容:
    &&status==200

    第二件事是不要陷入逻辑混乱

    第一个下拉列表可以由用户修改,也不能由用户修改——因此它不会影响其他两个下拉列表

    第二个下拉列表影响第三个下拉列表,因此是排序的“父级”

    第三个下拉列表从第二个下拉列表得到提示,应该使用ajax加载

    你的PHP看起来不错,我没有看到任何明显的问题。所以你的问题似乎与Javascript有关

    将网页视为一系列嵌套节点。所有节点的祖父母都是“文档”。您可以通过其“id”属性在文档中找到任何HTML节点,如下所示:

    document.getElementById("node-id-here");
    
    要有效地使用它,您只需执行以下操作:

    var node = document.getElementById("someNode");
    if(node != null)
    {
       var list = myAjaxResponse;
       node.innerHTML = list;
    }
    
    这是一个关于如何使用Javascript的非常基本的示例,有许多更全面的Javascript指南。而且,一旦您学习了Javascript,就可以随意实现几个不同的JS库之一,如jQuery等

    祝你好运


    H

    经过不断的搜索,我终于在这里发布的脚本中找到了我的答案:

    这并不完全是我所需要的,但它非常接近,而且一些修改正好完成了我所需要的。或者根据脚本中的值创建表,或者,如果表已经存在,就像我的例子一样,只需小心编辑/重命名脚本中的所有变量/表/列名,这将做得非常好

    在我的例子中,虽然我并不真正需要一个“三步”下拉列表(我的数据库表结构也没有提供相应的方法),但我基本上是按原样使用脚本,但我删除了“where”子句,从而列出该表中的所有条目,而不是仅列出与第一个选择框中的ID匹配的条目

    希望,如果您从上面的链接下载文件并打开它们,上面的解释会更清楚

    很抱歉,我不能解释所有的编程。我不是一个程序员,也不总是完全理解所有的代码,但我非常擅长使用别人编写的脚本,并为自己的目的修改它们


    如果需要的话,请随时提问。我会尽力回答。

    我很感激你的评论,并且可能会在以后使用它们,但我想我只是不太清楚如何将它们应用到我当前的脚本中。不过,我将尝试回答我自己的问题,因为我在网上找到了一个基本上做了我想做的(稍作修改)。我将在下面的答案中发布它,但这里是链接:[link]
    var node = document.getElementById("someNode");
    if(node != null)
    {
       var list = myAjaxResponse;
       node.innerHTML = list;
    }