Ho creato una pagina html che tramite oggetto asincrono riceve da un file php i dati da inserire in una tabella. Lo script Ajax esegue tutto alla perfezione ma i dati vengono visualizzati su Firefox ma non su IE 6 e 7. Eppure ho usato solo metodi del DOM Level 1.
Ecco il codice.
index.php
Codice PHP:
<?php ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="it" xml:lang="it">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Sito Ecommerce</title>
<link rel="stylesheet" type="text/css" href="stile.css" />
<script type="text/javascript" src="ajax.js"></script>
</head>
<body onload="init();">
<div id="contenitore"></div>
</body>
</html>
ajax.js
Codice PHP:
function createXMLHttpRequest() {
var XHR = null, browserClient = navigator.userAgent.toUpperCase(); if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object") XHR = new XMLHttpRequest();
else if(windows.ActiveXObject && browserClient.indexOf("MSIE 4") < 0) { if(browserClient.indexOf("MSIE 5") < 0)
XHR = new ActiveXObject("Msxml2.XMLHTTP");
else
XHR = new ActiveXObject("Microsoft.XMLHTTP");
}
return XHR;
}
function init() {
var http = createXMLHttpRequest();
if(http) {
http.open("post", "processdata.php", true);
http.setRequestHeader("content-type", "application/x-www-form-urlencoded");
http.onreadystatechange = function() {
if (http.readyState == 4) {
if (http.status == 200) {
var responso = http.responseXML;
if(responso) {
var classi = [ "foto", "codice", "descrizione", "prezzo", "quantita", "aggiungi" ];
var contenitore = document.getElementById("contenitore");
var tabella = document.createElement("table");
var articoli = responso.getElementsByTagName("articolo");
for(var j = 0; j < articoli.length; j++) {
var riga = document.createElement("tr");
for(var i = 0; i < classi.length; i++) {
var cella = document.createElement("td");
if(articoli[j].getElementsByTagName(classi[i])[0]) {
var testo = articoli[j].getElementsByTagName(classi[i])[0].firstChild.nodeValue;
} else {
var testo = classi[i]; } cella.appendChild(document.createTextNode(testo)); riga.appendChild(cella); } tabella.appendChild(riga); } contenitore.appendChild(tabella);
} else {
alert('Errore nella gestione dei dati: ' + http.responseText);
}
}
}
}
http.send(null);
}
}
Quest'ultimo invece è il file xml che php genera e manda come responso:
Codice PHP:
<?xml version="1.0" encoding="utf-8"?>
<articoli>
<articolo>
<codice>01289398</codice>
<descrizione>Articolo di esempio</descrizione>
<prezzo> 1000,45 € </prezzo>
<quantita>100</quantita>
</articolo>
<articolo>
<codice>01289398</codice>
<descrizione>Articolo di esempio</descrizione>
<prezzo> 1000,45 € </prezzo>
<quantita>100</quantita>
</articolo>
<articolo>
<codice>01289398</codice>
<descrizione>Articolo di esempio</descrizione>
<prezzo> 1000,45 € </prezzo>
<quantita>100</quantita>
</articolo>
<articolo>
<codice>01289398</codice>
<descrizione>Articolo di esempio</descrizione>
<prezzo> 1000,45 € </prezzo>
<quantita>100</quantita>
</articolo>
<articolo>
<codice>01289398</codice>
<descrizione>Articolo di esempio</descrizione>
<prezzo> 1000,45 € </prezzo>
<quantita>100</quantita>
</articolo>
</articoli>