私が使用しているものと非常によく似たものがあります:
<select name="selectProject" id="selectID" onChange="showUser(this.options[selectedIndex].value)">
<?php
// Loop through and list each project
foreach ($var as $row) {
echo '<option value="'.$row['projectNumber'].'">'.$row['projectName'].'</option>';
}
?>
</select>
<label>Project Name</label>
<input id="projectName" type="text" class="span3" name="projectName">
上記は、projectNumber であるパラメーターを使用して showUser 関数を呼び出すだけです。
それから私は持っています:
<SCRIPT TYPE="text/javascript">
// Function to fill in form fields
function showUser(str)
{
if (str=="")
{
document.getElementById("").innerHTML="";
return;
}
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 obj = eval('(' + this.responseText + ')');
document.getElementById("projectName").value=obj.projectname;
}
}
xmlhttp.open("GET","http://url.com/ajax/"+str,true);
xmlhttp.send();
}
</SCRIPT>
このスクリプトは、URL url.com/ajax/whateverIdIsSelected を呼び出します。
そのページから、クエリで行う必要があることをすべて実行します。
何を返すかについては、json を使用するように設定しています。
var obj = eval('(' + this.responseText + ')');
this.reponseText は ajax ページから返されるものです。私の折り返し電話は次のようになります
$projectData = json_encode($project);
echo $projectData;
$project は、プロジェクトの属性を含む配列です。
私は ajax や js があまり得意ではありませんが、好きなように動作させることができました。ご不明な点がございましたらお知らせください