Я в сети. Спасибо большое за код. До такого кода мне еще расти и расти.. но нужное почерпнул - все что мне было нужно - это функция eval()

Пусть универсальных решений в сети и полно - написал свое собственное. Конечно, далеко не идеальное - зато работает на ура!
Теперь для работи с аяксом нужно написать всего одну! строчку кода:
ajax("serverAdr", "params", "type", "function", "destID", "loadingID", "loadingHtlml")
Тоесть адрес сервера, параметри, возвращаемый тип (xml или text), функция обработки результата, ID елемента куда запишем результат (тоесть если указана ф-ция - результат обрабатывает она, если указан destID - то результат записывается в этот елемент). Ну и последних 2 параметра - это ID елемента и текст статуса загрузки - ну гифка там какая-нибудь.
Сделана постановка в очередь - если запросов много.. Проверил роботоспособность - в цикле:
while (i=0;i<50;i++){
ajax ("script1.php","param="+i,"text","","testID",", "")
ajax ("script2.php","param="+i,"text","","testID",", "")
ajax ("script3.php","param="+i,"text","","testID",", "")
ajax ("script4.php","param="+i,"text","","testID",", "")
ajax ("script5.php","param="+i,"text","","testID",", "")
}
И через пару секунд получил 250 ответов от сервера.. все четко)))
Теперь аякс можно везьде где только можно пихать! ))
Даю код - может кому пригодится.. Если найдете неточности, ошибки или знаете как усовершенствовать - пишите.
var xmlHttp = createXmlHttpRequestObject();
var intervalID = 0;
var showErrors = true;
var dId = ''; // destinationID
var cbF = ''; // callbackFunction
var type = ''; // type ('text' OR 'xml')
var updateInterval = 100; // how many miliseconds to wait to send new request
var timerId = 0;
/* initialize the ajax cache */
var cache = new Array();
function createXmlHttpRequestObject(){
var xmlHttp;
try{
xmlHttp = new XMLHttpRequest();
}catch(e){
var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
"MSXML2.XMLHTTP.5.0",
"MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP");
for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++){
try{
xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
}
catch (e) {} // ignore potential error
}
}
if (!xmlHttp)
displayError("Error creating the XMLHttpRequest object.");
else
return xmlHttp;
}
function displayError($message){
if (showErrors){
alert("Error encountered: \n" + $message);
}
}
function doAjax (){
if (cache.length == 0 ){
timerId = 0;
return;
}
if (xmlHttp){
try{
if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0)){
var ajax_params = cache.shift();
if ( ajax_params.lHtml && ajax_params.lId ){
document.getElementById( ajax_params.lId ).innerHTML = ajax_params.lHtml;
}
dId = ajax_params.dId;
cbF = ajax_params.cbF;
type = ajax_params.type;
xmlHttp.open("POST", ajax_params.server , true);
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.onreadystatechange = handleRequestStateChange;
xmlHttp.send ( ajax_params.params);
}else{
timerId = setTimeout("doAjax();", updateInterval);
}
}catch (e){
displayError("search error: "+e.toString());
}
}
}
function handleRequestStateChange(){
if (xmlHttp.readyState == 4){
if (xmlHttp.status == 200){
try{
readResponse();
}
catch(e){
displayError("handleRequestStateChange1 error: "+e.toString());
}
}else{
displayError("handleRequestStateChange2 error: "+xmlHttp.statusText);
}
}
}
function readResponse(){
var response = xmlHttp.responseText;
if (response.indexOf("ERRNO") >= 0
|| response.indexOf("error:") >= 0
|| response.length == 0)
throw(response.length == 0 ? "Server error." : response);
try{
var responseXml = xmlHttp.responseXml;
}catch(e){
var responseXml = '';
}
if ( type == 'xml'){
var resp = responseXml;
}else{
var resp = response;
}
if ( cbF ){
eval( cbF +'(resp)');
}else if ( dId ){
document.getElementById( dId ).innerHTML = resp;
}
timerId = setTimeout("doAjax();", updateInterval);
}
function ajax (serverVal , paramsVal , typeVal , cbFVal , dIdVal ,
lIdVal , lHtmlVal ){
var ajax_params = {server: serverVal,
params: paramsVal,
type: typeVal,
cbF: cbFVal,
dId: dIdVal,
lId: lIdVal,
lHtml: lHtmlVal
};
cache.push( ajax_params );
if ( !timerId ){
doAjax();
}
}