No to najpierw kod.
001.html:
To jest kod HTML. W IE działa, jak już pisałem (po zmianie zdarzenia z onsubmit formularza na onclick buttona wysyłającego oczywiście).
Kod 001.js:
Kod
/* Funkcja opakowująca do skonstruowania obiektu żądania.
Parametry:
reqType: typ żądania HTTP, na przykład GET lub POST.
url: adres URL programu serwerowego.
asynch: czy żądanie będzie wysłane asynchronicznie, czy też nie. */
function httpRequest(reqType,url,asynch){
// Przeglądarki na bazie Mozilli.
if(window.XMLHttpRequest){
request = new XMLHttpRequest();
} else if (window.ActiveXObject){
request=new ActiveXObject("Msxml2.XMLHTTP");
if (! request){
request=new ActiveXObject("Microsoft.XMLHTTP");
}
}
// Jeżeli nie powiodła się nawet inicjalizacja ActiveXObject,
// wówczas żądanie wciąż może być typu null.
if(request){
initReq(reqType,url,asynch);
} else {
alert("Używana przeglądarka nie pozwala na wykorzystanie "+
"wszystkich funkcji tej aplikacji!");
}
}
/* Inicjalizacja obiektu żądania, który został już skonstruowany. */
function initReq(reqType,url,bool){
/* Określamy funkcję, która będzie obsługiwała odpowiedź HTTP. */
request.onreadystatechange=handleResponse;
request.open(reqType,url,bool);
request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=iso-8859-2");
request.send(queryString);
}
function setQueryString(){
queryString="";
var frm = document.forms[0];
var numberElements = frm.elements.length;
for (var i = 0; i < numberElements; i++) {
if(i < numberElements-1) {
queryString += frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value)+"&";
} else {
queryString += frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value);
}
}
}
var request;
var queryString;
function sendData(){
setQueryString();
var url="001.xml";
httpRequest("POST",url,true);
alert("a");
}
// Obsługa zdarzeń dla XMLHttpRequest
function handleResponse(){
if(request.readyState == 4){
if(request.status == 200){
alert(request.responseText);
} else {
alert("Wystąpił problem z komuinkacją między obiektem XMLHttpRequest, a programem serwera.");
}
} // Koniec zewnętrznej pętli if.
}
Parametry:
reqType: typ żądania HTTP, na przykład GET lub POST.
url: adres URL programu serwerowego.
asynch: czy żądanie będzie wysłane asynchronicznie, czy też nie. */
function httpRequest(reqType,url,asynch){
// Przeglądarki na bazie Mozilli.
if(window.XMLHttpRequest){
request = new XMLHttpRequest();
} else if (window.ActiveXObject){
request=new ActiveXObject("Msxml2.XMLHTTP");
if (! request){
request=new ActiveXObject("Microsoft.XMLHTTP");
}
}
// Jeżeli nie powiodła się nawet inicjalizacja ActiveXObject,
// wówczas żądanie wciąż może być typu null.
if(request){
initReq(reqType,url,asynch);
} else {
alert("Używana przeglądarka nie pozwala na wykorzystanie "+
"wszystkich funkcji tej aplikacji!");
}
}
/* Inicjalizacja obiektu żądania, który został już skonstruowany. */
function initReq(reqType,url,bool){
/* Określamy funkcję, która będzie obsługiwała odpowiedź HTTP. */
request.onreadystatechange=handleResponse;
request.open(reqType,url,bool);
request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=iso-8859-2");
request.send(queryString);
}
function setQueryString(){
queryString="";
var frm = document.forms[0];
var numberElements = frm.elements.length;
for (var i = 0; i < numberElements; i++) {
if(i < numberElements-1) {
queryString += frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value)+"&";
} else {
queryString += frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value);
}
}
}
var request;
var queryString;
function sendData(){
setQueryString();
var url="001.xml";
httpRequest("POST",url,true);
alert("a");
}
// Obsługa zdarzeń dla XMLHttpRequest
function handleResponse(){
if(request.readyState == 4){
if(request.status == 200){
alert(request.responseText);
} else {
alert("Wystąpił problem z komuinkacją między obiektem XMLHttpRequest, a programem serwera.");
}
} // Koniec zewnętrznej pętli if.
}
Plik XML jest zbudowany najzupełniej poprawnie.
Widzę to tak:
Po kliknięciu buttona wykonuje się funkcja sendData(), która uruchamia SetQueryString(), która to ustawia ciąg postaci firstname=imie&lastname=nazwisko&gender=plec&country=kraj, zależnie od wpisanych danych. Następnie zostaje wykonane żądanie za pomocą httpRequest(). I chyba tutaj coś nie działa, bo za pomocą linijki alert("a"); wstawianej w różnych miejscach kodu doszedłem do tego, że we wszystkich przeglądarkach oprócz IE to tutaj skrypt się wykrusza - alert wstawiony przed tą linią wykonuje się, po tej linii - już nie. Mógłby ktoś pomóc?
