我試圖做一個簡單的練習,使用XMLHTTPrequest對象和POST方法從JS查詢數據庫。基本上,我將一個字符串傳遞給PHP服務器,它接收它,查詢數據庫並從JS中讀取信息的位置返回一個XML,但是某些內容不起作用:請求準備就緒後應執行的回調函數。如何正確使用Ajax和PHP從JavaScript查詢數據庫?
這裏的JS代碼:
function leerDNI(dni){
var params="dni="+dni;
downloadUrl(params,"genxml.php", function(data) {
var xml = parseXml(data);//THIS IS NOT BEING EXECUTED
var dnis = xml.documentElement.getElementsByTagName("dni");//THIS IS NOT BEING EXECUTED
for (var i = 0; i < dnis.length; i++) {//THIS IS NOT BEING EXECUTED
var name = dnis[i].getAttribute("name");
alert(name); //THIS IS NOT BEING EXECUTED
document.getElementById("name").value=name; //THIS IS NOT BEING EXECUTED
}
});
}
function downloadUrl(params,url, callback) {
var request = window.ActiveXObject ?
new ActiveXObject('Microsoft.XMLHTTP') :
new XMLHttpRequest;
request.onreadystatechange = function() {
if (request.readyState == 4) {
request.onreadystatechange = doNothing;
callback(request.responseText, request.status);
}
};
request.open("POST", url, true);
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");//creación de headers
request.send(params);//enviamos la petición POST
}
function parseXml(str) {
if (window.ActiveXObject) {
var doc = new ActiveXObject('Microsoft.XMLDOM');
doc.loadXML(str);
return doc;
} else if (window.DOMParser) {
return (new DOMParser).parseFromString(str, 'text/xml');
}
}
function doNothing() {}
被正確生成的XML。任何人都可以點亮我的代碼中的錯誤?非常感謝你!
是的,我已檢查刪除request.status參數之前,沒有做出改變。不管怎麼說,還是要謝謝你! – danielrozo 2012-03-27 09:16:09
如果ajax請求成功執行並且瀏覽器接收到數據,您是否使用像firebug這樣的插件進行檢查? – grifos 2012-03-27 14:41:25