Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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 动态填充动态创建的选择列表_Javascript_Ajax_Dynamic - Fatal编程技术网

Javascript 动态填充动态创建的选择列表

Javascript 动态填充动态创建的选择列表,javascript,ajax,dynamic,Javascript,Ajax,Dynamic,我在这里有点困难;我使用js动态创建选择框,但我需要Ajax来填充选项。到目前为止,我的代码返回未定义,坦率地说,我不知道在这里做什么。我的php返回的信息很好,但是js没有解析它。另一双眼睛,或者另一个充满知识的大脑,在这里会被欣赏 函数getSkilllist(组){ if(window.XMLHttpRequest){//IE7+、Firefox、Chrome、Opera、Safari的代码 xmlhttp=新的XMLHttpRequest(); } else{//IE6、IE5的代码 x

我在这里有点困难;我使用js动态创建选择框,但我需要Ajax来填充选项。到目前为止,我的代码返回未定义,坦率地说,我不知道在这里做什么。我的php返回的信息很好,但是js没有解析它。另一双眼睛,或者另一个充满知识的大脑,在这里会被欣赏

函数getSkilllist(组){
if(window.XMLHttpRequest){//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
else{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
返回xmlhttp.responseText;
}
}
open(“GET”、“skl_lst_gen2.php?group=“+group+”&t=“+Math.random(),true);
xmlhttp.send();
}
函数addInput(divName,组){
var skillst=getSkilllist(组);
var newdiv=document.createElement('div');
newdiv.innerHTML=''+skillst+'。。。。。

函数的其余部分还可以,但是var skillst返回的是未定义的,我不知道为什么。我假设它与字符串有关,但我不知道需要执行什么操作。

您的函数没有返回任何内容,这就是它无法工作的原因。请尝试以下操作:

function getSkilllist(group) {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
       var newdiv = document.createElement('div');
       newdiv.innerHTML = '<select name="ski[]">' + xmlhttp.responseText + '</select> .....

       //place in DOM here
    }
}
xmlhttp.open("GET","skl_lst_gen2.php?group=" + group + "&t=" + Math.random(),true);
xmlhttp.send();
}

function addInput(divName,group) {
getSkilllist(group);
函数getSkilllist(组){
if(window.XMLHttpRequest){//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
else{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
var newdiv=document.createElement('div');
newdiv.innerHTML=''+xmlhttp.responseText+'。。。。。
//放在这里
}
}
open(“GET”、“skl_lst_gen2.php?group=“+group+”&t=“+Math.random(),true);
xmlhttp.send();
}
函数addInput(divName,组){
getSkilllist(组);

您的函数不返回任何内容,这就是它不工作的原因。请尝试以下操作:

function getSkilllist(group) {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
       var newdiv = document.createElement('div');
       newdiv.innerHTML = '<select name="ski[]">' + xmlhttp.responseText + '</select> .....

       //place in DOM here
    }
}
xmlhttp.open("GET","skl_lst_gen2.php?group=" + group + "&t=" + Math.random(),true);
xmlhttp.send();
}

function addInput(divName,group) {
getSkilllist(group);
函数getSkilllist(组){
if(window.XMLHttpRequest){//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
else{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
var newdiv=document.createElement('div');
newdiv.innerHTML=''+xmlhttp.responseText+'。。。。。
//放在这里
}
}
open(“GET”、“skl_lst_gen2.php?group=“+group+”&t=“+Math.random(),true);
xmlhttp.send();
}
函数addInput(divName,组){
getSkilllist(组);
记住(通常)Ajax请求是异步的,因此在
xmlhttp.send()之后
您的其他代码在不等待响应的情况下继续执行,随后将处理来自Ajax请求的响应。因此,您的
getSkilllist
函数根本不返回任何内容,
skillst
将被取消定义,但在Ajax响应时,您的其他代码将继续执行并创建
div
,等等在您为
xmlhttp定义的匿名函数中提供。onreadystatechange
将执行,因此您需要按照下面的答案在这里创建
div
。请记住(通常)Ajax请求是异步的,因此在
xmlhttp.send()之后
您的其他代码在不等待响应的情况下继续执行,随后将处理来自Ajax请求的响应。因此,您的
getSkilllist
函数根本不返回任何内容,
skillst
将被取消定义,但在Ajax响应时,您的其他代码将继续执行并创建
div
,等等进入您为
xmlhttp定义的匿名函数。onreadystatechange
将执行,因此您需要按照下面的答案在这里创建
div