使用AJAX调用PHP文件,通过JSON返回数据库结果并填充选择框
我目前是一名学生,所以请认识到我的技能是非常新的(对于所有HTML、CSS、Javascript、PHP等,实际上只有几个月的时间)。我正在为一个PHP课程做一个学校项目,我想做的一些事情超出了我迄今所学的范围(JSON和AJAX对我来说是全新的)。这将是我在这个网站上的第一篇帖子,尽管在过去的几个月里我经常使用它作为参考 我的目标是创建一个网站,其中包含一个下拉框(选择框),其中包含来自MySQLi数据库表“make”的汽车制造商。一旦您选择了一辆汽车“make”,则第二个下拉框应处于启用状态,并仅填充所选制造商的相关型号。此模型信息来自同一数据库中名为“model”的另一个表 “make”表的结构如下: 插入使用AJAX调用PHP文件,通过JSON返回数据库结果并填充选择框,php,ajax,json,dynamic,drop-down-menu,Php,Ajax,Json,Dynamic,Drop Down Menu,我目前是一名学生,所以请认识到我的技能是非常新的(对于所有HTML、CSS、Javascript、PHP等,实际上只有几个月的时间)。我正在为一个PHP课程做一个学校项目,我想做的一些事情超出了我迄今所学的范围(JSON和AJAX对我来说是全新的)。这将是我在这个网站上的第一篇帖子,尽管在过去的几个月里我经常使用它作为参考 我的目标是创建一个网站,其中包含一个下拉框(选择框),其中包含来自MySQLi数据库表“make”的汽车制造商。一旦您选择了一辆汽车“make”,则第二个下拉框应处于启用状态
make
(id
,code
,title
)值
(1,“ACURA”、“ACURA”),
(2,“阿尔法”,“阿尔法·罗密欧”),
(3,“资产管理公司”、“资产管理公司”),
(4,“阿斯顿”、“阿斯顿马丁”),
(5,“奥迪”、“奥迪”),
(6,“AVANTI”、“AVANTI”),
(7,“BENTL”、“Bentley”),
(8"宝马","宝马",,
(9,“别克”、“别克”),
(10"CAD","Cadillac",,
(11、‘雪佛兰’、‘雪佛兰’),
(12,“CHRY”、“Chrysler”),
(13,“大宇”、“大宇”),
等
“模型”表如下所示:
插入型号(id
,make\u id
,code
,title
)值
(1,1,'CL_模型','CL模型(4)',
(2,1,'2.2CL','-2.2CL'),
(3,1,'2.3CL','-2.3CL'),
(4,1,'3.0CL','-3.0CL'),
(5,1,'3.2CL','-3.2CL'),
(6,1,'ILX','ILX'),
(7,1,'INTEG','Integra'),
(8,1,'图例','图例'),
(9,1,'MDX','MDX'),
(10,1,'NSX','NSX'),
(11,1,'RDX','RDX'),
(12,1,'RL_车型','RL车型(2)',
(13,1,'3.5RL','-3.5RL'),
(14,1,'RL','-RL'),
(15,1,'RSX','RSX'),
(16,1,'SLX','SLX'),
(17,1,“TL_模型”,“TL模型(3)”,
等
我有填充数据库表“make”中的第一个dropbox的代码。一旦从dropbox(onchange事件)中选择make,它似乎正在调用我的javascript函数ok,因为我可以提醒make,它显示ok。在那之后它就不起作用了。我不确定它是否正确调用了我的php代码,php是否工作正常等等。请查看并让我知道您的想法
下面是我的两个Dropbox的HTML和Javascript函数:
函数getModel(carMake)
{
var-xmlhttp;
var-getRequest;
警报(carMake);//此警报正在工作并显示汽车品牌!
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
var carModels=JSON.parse(xmlhttp.responseText.split)(“”);
警报(carModels.toString());
var carModelsHTML=“”;
对于(i=0;i ”;
}
警报(carModelsHTML);
document.getElementById(“车辆型号”).disabled=false;
document.getElementById(“AjaxDiv”).innerHTML=carModelsHTML;
}
}
getRequest=“myAjax.php?make=“+carMake;
open(“GET”,getRequest,true);
xmlhttp.send();
}
车辆品牌:
我真的建议你先研究一下:
我想你会学得很好,学到更多。有了Jonathan提供的调试思想,我取得了一些进展,并最终使它工作起来。请注意,有相当多的改变做了代码从原来的文章,但希望这将有助于其他人可能会陷入类似的问题或来自这篇文章
下面是现在的Javascript和HTML:
函数getModel(carMake)
{
var-xmlhttp;
var-getRequest;
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
var carModels=xmlhttp.responseText.split(“,”);//接收一个长字符串中的汽车模型,每个模型用“,”分隔,并将其拆分为一个数组
//下面的代码部分抓取当前的“model”下拉框并找到长度,然后将所有选项置空。
var currentOptions=document.getElementById(“车辆模型”);
对于(i=currentOptions.options.length-1;i>=0;i--)
{
当前选项。删除(i);
}
//下面介绍刚刚从数据库返回的所有模型选项,并再次填充“model”下拉框。
对于(i=0;i
车辆品牌:
你真的需要缩小问题的范围。巨大的代码墙使得有人能够帮助你的可能性大大降低。对不起,我有一个习惯,就是有点详细和冗长。不幸的是,由于不知道问题在哪里,并且在尝试了我知道的有限调试后被卡住,我在这里发布了所有相关的代码并试图获得帮助。谢谢你的评论,我已经在这里了。我从头到尾都学习了关于ajax的w3schools“课程”,大部分php也已经学习过了。我也有烧焦