Salve,
mi sto un attimo riprendendo in mano il codice che ho scritto al volo per il mio sito.. Vorrei centralizzare le chiamate ajax per scrivere meno codice possibile, per ora sono giunto a questo ma facendo una prova non mi funge..
Qualcuno ci da un occhio? non so neanche se sto facendo nel modo giusto perchè sto scrivendo più php-like che js-like ma comunque qualcosa c'è:
Codice PHP:
var ajaxObject = {
callXMLhttp: function () {
var request;
//se il browser è firefox
if (window.XMLHttpRequest) {
//istanzio un nuovo oggetto XMLHttpRequest
request = new XMLHttpRequest();
if (request.overrideMimeType) {
request.overrideMimeType('text/xml');
}
//se il browser è IE
} else if (window.ActiveXObject) {
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
request = false;
}
}
}
//restituisco l'istanza all'oggetto ajax
return request;
},
manage: function (request, type, callback) {
var result;
if (request.readyState === 4 && request.status === 200) {
switch (type) {
case 'text':
result = request.responseText;
break;
case 'json':
result = $.parseJSON(request.responseText);
break;
}
callback.show(result);
} else {
this.requestFailed('error', request);
}
},
requestFailed: function (id, request) {
if (document.getElementById) {
//linea 557 document.getElementById(id).innerHTML = 'The XMLHttpRequest failed, STATUS: ' + request.status;
}
return;
}
};
in particolare il metodo "manage"
Codice PHP:
oHttpMarkerReq = ajaxObject.callXMLhttp();
if (oHttpMarkerReq) {
oHttpMarkerReq.open("POST", url, true);
oHttpMarkerReq.onreadystatechange = ajaxObject.manage(oHttpMarkerReq, 'json', mapFunc);
il primo test mi da:
Errore: uncaught exception: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: http://www..net/js/utils.js :: anonymous :: line 557" data: no]
ma non sono molto sicuro che onreadystatechange possa accettare una funzione scritta in quel modo
(mapFunc ovviamente ha un metodo "show" tra gli altri)
solutions?