2011-06-17 11 views
1

私はここで少し問題があります。選択ボックスを動的に作成するためにjsを使用していますが、オプションを設定するにはAjaxが必要です。これまでのところ、私のコードは未定義に戻っています。私は率直に言って、ここで何をすべきか分かりません。私のPHPは情報を返しますが、jsは解析していません。目の別のセット、または知識でいっぱいの別の脳がここで評価されるでしょう。動的に作成された選択リストを動的に取り込みます

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) { 
      return xmlhttp.responseText; 
     } 
    } 
    xmlhttp.open("GET","skl_lst_gen2.php?group=" + group + "&t=" + Math.random(),true); 
    xmlhttp.send(); 
} 

function addInput(divName,group) { 
var skillst = getSkilllist(group); 
var newdiv = document.createElement('div'); 
newdiv.innerHTML = '<select name="ski[]">' + skillst + '</select> ..... 

機能の残りの部分は結構ですが、述べたようにするvar skillstは未定義戻っている、と私は理由を理解することはできません。私はそれが文字列と関係があると思いますが、何をする必要があるのか​​分かりません。

+1

(通常は)Ajaxリクエストが* *非同期であるので) 'xmlhttp.send(後に'あなたの他のコードは、応答を待たずに実行を続け、その後、Ajaxリクエストからの応答があることを覚えておいてください後で処理されます。したがって、 'getSkilllist'関数は何も返さず、' skillst'は未定義ですが、あなたの他のコードは続行し、 'div'が作成されます。Ajaxレスポンスが' xmlhttp .onreadystatechange'が実行されますので、以下の答えに従って 'div'を作成する必要があります。 – nnnnnn

答えて

1

あなたの関数は何も返しません。そのため、関数が動作しません。これを試してみてください:

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); 
+0

そうでした、ありがとう。 – Daedalus

関連する問題