Pequena biblioteca JavaScript Ajax

Eu estou procurando uma biblioteca JavaScript Ajax muito pequena (um forro) para adicionar na primeira linha de um pequeno script para fazer algumas solicitações.

Eu já tentei:

Mas eles não funcionam de todo. Alternativas?

Aqui você vai, bem simples:

function createXHR() { var xhr; if (window.ActiveXObject) { try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { alert(e.message); xhr = null; } } else { xhr = new XMLHttpRequest(); } return xhr; } 

A documentação está aqui

Exemplo:

 var xhr = createXHR(); xhr.onreadystatechange = function() { if (xhr.readyState === 4) { alert(xhr.responseText); } } xhr.open('GET', 'test.txt', true) xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); xhr.send() 

Atualizar:

Para fazer scripts entre domínios, você terá que chamar um proxy local do lado do servidor (que lê e ecoa os dados remotos) ou, se o seu serviço remoto retornar JSON, use este método:

 var s = document.createElement('script') s.src = 'remotewebservice.json'; document.body.appendChild(s); 

Como o JSON é essencialmente um object ou matriz JavaScript, essa é uma fonte válida. Você, teoricamente, deveria poder chamar o serviço remoto diretamente. Eu não testei isso, mas parece ser uma prática aceita:

Referência: Chamando Serviços Web de Domínio Cruzado em AJAX

Você pode construir sua própria versão do jQuery que inclui apenas os módulos AJAX.

https://github.com/jquery/jquery#how-to-build-your-own-jquery
https://github.com/jquery/jquery#modules

Tão pequeno…

 var obj = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : (XMLHttpRequest && new XMLHttpRequest()) || null; 

Aqui está a minha versão com callback asynchronous no estilo node.js

https://gist.github.com/4706967

 // tinyxhr by Shimon Doodkin - licanse: public doamin - https://gist.github.com/4706967 // // tinyxhr("site.com/ajaxaction",function (err,data,xhr){ if (err) console.log("goterr ",err,'status='+xhr.status); console.log(data) }); // tinyxhr("site.com/ajaxaction",function (err,data,xhr){ if (err) console.log("goterr ",err,'status='+xhr.status); console.log(data) },'POST','value1=1&value2=2'); // tinyxhr("site.com/ajaxaction.json",function (err,data,xhr){ if (err) console.log("goterr ",err,'status='+xhr.status); console.log(data); console.log(JSON.parse(data)) },'POST',JSON.stringify({value:1}),'application/javascript'); // cb - function (err,data,XMLHttpRequestObject){ if (err) throw err; } // function tinyxhr(url,cb,method,post,contenttype) { var requestTimeout,xhr; try{ xhr = new XMLHttpRequest(); }catch(e){ try{ xhr = new ActiveXObject("Msxml2.XMLHTTP"); }catch (e){ if(console)console.log("tinyxhr: XMLHttpRequest not supported"); return null; } } requestTimeout = setTimeout(function() {xhr.abort(); cb(new Error("tinyxhr: aborted by a timeout"), "",xhr); }, 5000); xhr.onreadystatechange = function() { if (xhr.readyState != 4) return; clearTimeout(requestTimeout); cb(xhr.status != 200?new Error("tinyxhr: server respnse status is "+xhr.status):false, xhr.responseText,xhr); } xhr.open(method?method.toUpperCase():"GET", url, true); //xhr.withCredentials = true; if(!post) xhr.send(); else { xhr.setRequestHeader('Content-type', contenttype?contenttype:'application/x-www-form-urlencoded'); xhr.send(post) } } tinyxhr("/test",function (err,data,xhr){ if (err) console.log("goterr ",err); console.log(data) }); 

Você provavelmente pode usar o omee. É um único arquivo contendo muitas funções javascript usadas com frequência, como a solicitação ajax.

https://github.com/agaase/omee/blob/master/src/omee.js

para fazer um pedido de ajax, basta chamar omee.raiseAjaxRequest

com argumentos

params-parameters list eg param1 = param1value & param2 = param2value

url – url para acertar o servidor

nome func-function que deve ser chamado de volta

connType – GET / POST.

Bem …… jQuery é provavelmente maior do que o que você quer, mas é sem dúvida ainda uma boa opção. É bem documentado, bem suportado e se você usar o link CDN

 http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js 

é muito provável que esteja presente e armazenado em cache na máquina do cliente.