2010-08-12 19 views
25

Estoy buscando una muy pequeña (una línea) Ajax JavaScript biblioteca para agregar en la primera línea de un pequeño script para hacer algunas solicitudes.Small Ajax JavaScript library

ya lo intentaron:

Pero ellos no funcionan en absoluto. ¿Alternativas?

+2

veo ninguna razón real de por qué estos dos bibliotecas no funcionarían. –

+0

posible duplicado de [¿Cómo hacer una llamada ajax sin jquery?] (Http://stackoverflow.com/questions/8567114/how-to-make-an-ajax-call-without-jquery) – parvus

+0

Incluso uso microajax en mi sitio web a gran escala, pero podría cambiar a jquery http://static.lastdates.com/package/microajax/test.html –

Respuesta

33

Aquí tiene, bastante simple:

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; 
} 

documentación es here

Ejemplo:

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() 

Actualización:

Con el fin de hacer cross-domain scripting , tendrás que llamar a un proxy del lado del servidor local (que lee y el eco de los datos a distancia), o, si su servicio remoto devuelve JSON, utilice este método:

Desde JSON es esencialmente un objeto JavaScript o matriz, esto es una fuente válida Usted teóricamente debería poder llamar al servicio remoto directamente. No he probado esto, pero parece ser una práctica aceptada:

Referencia: Calling Cross Domain Web Services in AJAX

+0

Ah, pero ahora lo que olvidé fue: debería ser de dominio cruzado: O – TomShreds

+0

Ooh, esa es una pregunta difícil. [investigaciones] –

+3

@Tom Diría que vale la pena su propia pregunta. –

-1

Bueno ...... jQuery es probablemente más grande que lo que quiere, pero es sin duda sigue siendo una muy buena opción. Está bien documentado, bien apoyado, y si se utiliza el enlace CDN

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

incluso es muy probable que esté presente y en caché en la máquina del cliente ya.

+0

Google CDN: http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery .min.js – Radu

+0

@Radu vítores, esa URL era lo que quise decir. –

+0

Gracias pero solo quería un pequeño fragmento. Uso jQuery para todo mi trabajo relacionado con JavaScript, pero para esta vez necesitaba algo muy pequeño. – TomShreds

3

Entonces ... pequeña ...

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

Mucho ajax. Tal wow. – samvv

3

aquí está mi versión con devolución de llamada asincrónica en 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) }); 
0

puede probab Yo uso omee. Es un archivo único que contiene muchas funciones de javascript utilizadas con frecuencia, como la solicitud ajax.

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

para elevar una petición AJAX que acaba de llamar omee.raiseAjaxRequest

con argumentos

lista

parámetros params- correos.g param1 = param1value & param2 = param2value

url - URL para golpear el servidor

nombre de la función fun- que ha de ser llamado de nuevo

connType - GET/POST.

19

Puede crear su propia versión de jQuery que solo incluya los módulos AJAX.

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

+0

Esta es una muy buena sugerencia. ¿Quién lo rechazaría y por qué? Ve SE !. – Phil

+1

Gracias @phil, un amante descontento tal vez – msaspence

+2

http://projects.jga.me/jquery-builder/ sugiere que incluso un jQuery 2.1.1 de solo ajax es de 18 kb con gzip y minified (jQuery completo es de 28 kb). Solo quería mencionar esto ya que me sorprendió que no fuera más pequeño. – Keeth