我正在尝试设置一个进行 Ajax 调用的函数,但我必须承认,当我设置 onclick 事件时,我无法理解发生了什么。我正在尝试进行 Ajax 调用以从数据库中获取字段并将它们显示给用户。这个想法是用户在输入字段中输入姓氏,然后根据他们单击的链接,我正在尝试构建的函数显示对数据库的查询结果。我在 Ajax 函数调用的脚本上使用 PHP 中的 switch 语句处理查询,但我无法在 Javascript 代码上设置处理此行为的变量。
我有这样的Javascript代码:
var ajaxRequest = ajaxFunction();
function ajaxFunction(){
var ajaxRequest; // The variable that makes Ajax possible!
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}
}
} return ajaxRequest;
}
function process() {
id="default";
profesional = document.getElementById('profesional');
dotal = document.getElementById('dot');
proyecta = document.getElementById('proy');
proyecta_A = document.getElementById('proy_af');
gastosM = document.getElementById('gastos_med');
autos = document.getElementById('aut');
polifam = document.getElementById('polif');
profesional.onclick=function() {
id="prof";
return id;
}
dotal.onclick=function() {
id="dotal";
return id;
}
proyecta.onclick=function() {
id="proyecta";
return id;
}
proyecta_A.onclick=function() {
id="proyAf";
return id;
}
gastosM.onclick=function() {
id="gastos_medicos";
return id;
}
autos.onclick=function() {
id="autos";
return id;
}
polifam.onclick=function() {
id="polifam";
return id;
}
if(ajaxRequest.readyState==4 || ajaxRequest.readyState==0) {apellido = encodeURIComponent(document.getElementById('query').value)
if (apellido != undefined) {
ajaxRequest.open("GET", 'adminsrc.php?buscarregistro=' +apellido +'&id='+id, true)
ajaxRequest.send("");
ajaxRequest.onreadystatechange=handleServerResponse;
}
}
else setTimeout('process()',1000);
}
function handleServerResponse(){
{
if (ajaxRequest.readyState==4) {
if(ajaxRequest.status==200) {
respuesta=ajaxRequest.responseXML;
respuestadoc = respuesta.documentElement;
if (apellido != undefined) {
ident = respuesta.getElementsByTagName('identidad')[0];
result = ident.firstChild;
refrescar = respuesta.getElementsByTagName('identidad')[1];
actualizar = refrescar.firstChild;
if(result!=undefined) {
resultado = result.data;
document.getElementById('profesreg').setAttribute('value', resultado);
document.getElementById('dotalreg').setAttribute('value', resultado);
document.getElementById('gmmreg').setAttribute('value', resultado);
document.getElementById('proyectareg').setAttribute('value', resultado);
document.getElementById('proyecta2reg').setAttribute('value', resultado);
document.getElementById('autosreg').setAttribute('value', resultado);
document.getElementById('polifreg').setAttribute('value', resultado);
}
if(actualizar!=undefined) {
actualiza = actualizar.data;
document.getElementById('actual_1').setAttribute('value', actualiza);
document.getElementById('actual_2').setAttribute('value', actualiza);
document.getElementById('actual_3').setAttribute('value', actualiza);
document.getElementById('actual_4').setAttribute('value', actualiza);
document.getElementById('actual_5').setAttribute('value', actualiza);
document.getElementById('actual_6').setAttribute('value', actualiza);
document.getElementById('actual_7').setAttribute('value', actualiza);
}
msje = respuestadoc.firstChild.childNodes[0];
if (msje !=undefined) {
mess = msje.data;
document.getElementById("res").innerHTML = "<h4>"+ mess +"</h4>";
}
}
setTimeout('process()',1000);
}
else alert ('hubo un problema al conectarse con el servidor: ' + ajaxRequest.statusText);
}
}
}
//-->
最后一部分只是设置表单中隐藏字段的值,以便 PHP 识别这些值(它们被设置为更新数据库中的某些字段)。但我必须说我非常坚持使用 javascript(我从来不擅长它)。请问有什么建议吗?
@Mate xml 文件是这样构建的:
<identificacion>
<response>
Se encontró al asegurado con nombre Mara Fernanda Bravo Palomino, número de póliza 27608165, la cual vence el 2003-04-05 y cuyos beneficiarios contratados son Ana Camila Lpez Bravo
</response>
<identidad>Bravo Palomino</identidad>
<identidad>si</identidad>
</identificacion>
有一次(几周前)我已经让它使用这样的功能:
function process() {
if(ajaxRequest.readyState==4 || ajaxRequest.readyState==0) {apellido = encodeURIComponent(document.getElementById('query').value)
if (apellido != undefined) {
ajaxRequest.open("GET", 'adminsrc.php?buscarregistro=' +apellido, true)
ajaxRequest.send("");
ajaxRequest.onreadystatechange=handleServerResponse;
}
}
else setTimeout('process()',1000);
}
以及上面的函数handleServerResponse;但正如您所见,我只能通过复杂的迭代从 xml 中提取文本节点。当然有更简单的方法。