您知道如何使用ajax同时初始化两个列表吗?
这是我的代码
<html>
<body onload="iniciaListas()">
<script type="text/javascript">
var xmlHttp
function iniciaListas()
{
muestraListaPaises();
muestraListaProfesiones();
}
function muestraListaProfesiones()
{
//Se inicializa el objeto ajax para manipular los eventos asincronos al servidor
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
{
alert ("Your browser does not support AJAX!");
return;
}
//Se obtine el id de la lista
var obCon = document.getElementById("ocupacion");
//Por medio del metodo GET se llama nuestra pagina PHP
xmlHttp.open("GET", "../Listas/listaProfesiones.php");
//On ready funcion es la funcion que se da cuenta cuando la pagina php acaba de hacer su proceso
xmlHttp.onreadystatechange = function() {
//el estado 4 indica que esta listo para procesar la instruccion
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
//despues que nuestro objeto ajax proceso la pagina php recupera un xml generado
obXML = xmlHttp.responseXML;
//despues obtine los datos contenidos en las siguites etiquetas
obCod = obXML.getElementsByTagName("ID");
obDes = obXML.getElementsByTagName("NOMPROFESION");
//esta funcion devuelve en su la longitud de todos los registros
obCon.length=obCod.length;
//cilclo de llenado para las listas
for (var i=0; i<obCod.length;i++) {
obCon.options[i].value=obCod[i].firstChild.nodeValue;
obCon.options[i].text=obDes[i].firstChild.nodeValue;
}
}
}
//este objeto envia un nulll debido a que el metodo utilizado es get
xmlHttp.send(null);
}
function muestraListaPaises()
{
//Se inicializa el objeto ajax para manipular los eventos asincronos al servidor
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
{
alert ("Your browser does not support AJAX!");
return;
}
//Se obtine el id de la lista
var obCon = document.getElementById("pais");
//Por medio del metodo GET se llama nuestra pagina PHP
xmlHttp.open("GET", "../Listas/listaPaises.php");
//On ready funcion es la funcion que se da cuenta cuando la pagina php acaba de hacer su proceso
xmlHttp.onreadystatechange = function() {
//el estado 4 indica que esta listo para procesar la instruccion
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
//despues que nuestro objeto ajax proceso la pagina php recupera un xml generado
obXML = xmlHttp.responseXML;
//despues obtine los datos contenidos en las siguites etiquetas
obCod = obXML.getElementsByTagName("ID");
obDes = obXML.getElementsByTagName("NOMPAIS");
//esta funcion devuelve en su la longitud de todos los registros
obCon.length=obCod.length;
//cilclo de llenado para las listas
for (var i=0; i<obCod.length;i++) {
obCon.options[i].value=obCod[i].firstChild.nodeValue;
obCon.options[i].text=obDes[i].firstChild.nodeValue;
}
}
}
//este objeto envia un nulll debido a que el metodo utilizado es get
xmlHttp.send(null);
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
</script>
<html>
<body onload="iniciaListas()">
<script type="text/javascript" src="lists.js"> </script>
<b>Country</b><br>
<select name="pais" id="pais" ></select>
<b>Ocupation</b><br>
<select name="pais" id="pais" ></select>
</body>
</html>
答案 0 :(得分:2)
我建议为Ocupation节点使用不同的ID,然后加倍添加:
JS Snip - 抓住另一个列表,添加到两个:
//Se obtine el id de la lista
var obCon = document.getElementById("pais");
var obOcupation = document.getElementById("ocupation");
...
for (var i=0; i<obCod.length;i++) {
obCon.options[i].value=obCod[i].firstChild.nodeValue;
obCon.options[i].text=obDes[i].firstChild.nodeValue;
obOcupation.options[i].value=obCod[i].firstChild.nodeValue;
obOcupation.options[i].text=obDes[i].firstChild.nodeValue;
}
HTML - 给第二个选择一个不同的名称(对于服务器端)和id(对于javascript):
<html>
<body onload="iniciaListas()">
<script type="text/javascript" src="lists.js"> </script>
<b>Country</b><br>
<select name="pais" id="pais" ></select>
<b>Ocupation</b><br>
<select name="ocupation-pais" id="ocupation" ></select>
</body>
</html>
使用现有的JS框架(如jQuery ...
)可以大大简化您的代码答案 1 :(得分:0)
据推测,Ajax调用将以字符串或JSON对象的形式获取数据,然后调用您指定的一些OnComplete函数。在OnComplete中,通常,您获取该数据并使用它来填充列表。只需将填充代码加倍于该函数
答案 2 :(得分:-1)
使用ajax可能不够具体。你的意思是JavaScript吗?