2010-08-12 2 views
25

Я ищу очень маленькую (одну линейку) библиотеку JavaScript Ajax, чтобы добавить в первую строку небольшого скрипта, чтобы сделать некоторые запросы.Небольшая библиотека JavaScript Ajax

Я уже пробовал:

Но они не работают вообще. Альтернативы?

+2

Я не вижу никакой реальной причины, почему эти две библиотеки не будут работать. –

+0

Возможный дубликат [Как сделать вызов ajax без jquery?] (Http://stackoverflow.com/questions/8567114/how-to-make-an-ajax-call-without-jquery) – parvus

+0

Я даже использую microajax в мой крупномасштабный веб-сайт, но может переместиться на jquery http://static.lastdates.com/package/microajax/test.html –

ответ

33

Здесь вы идете, довольно просто:

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

Документация here

Пример:

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

Update:

Для того, чтобы сделать междоменное сценариев , вам придется либо позвонить к локальному серверу на стороне прокси-сервера (который читает и эхо это удаленные данные), или, если удаленный сервис возвращает JSON, используйте этот метод:

Поскольку JSON является по существу объект JavaScript или массив, это действительный источник. Вы теоретически должны иметь возможность напрямую обращаться к удаленной службе. Я не проверял, но это, кажется, общепринятая практика:

Ссылка: Calling Cross Domain Web Services in AJAX

+0

О, но теперь я забыл, что это должно быть кросс-домен: O – TomShreds

+0

О, это грубо. [исследования] –

+3

@ Тома, я бы сказал, что стоит вопрос сам по себе. –

-1

Ну ... jQuery, вероятно, больше, чем вы хотите, но это, возможно, еще очень хороший вариант. Это хорошо документированы, хорошо поддерживается, и если вы используете ссылку CDN

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

это даже очень вероятно, будет присутствовать и кэшируется на клиентской машине уже.

+0

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

+0

@ Раду приветствует, этот URL-адрес я имел в виду. –

+0

Спасибо, но мне нужен только небольшой фрагмент. Я использую jQuery для всей моей работы, связанной с javascript, но для этого времени мне было нужно что-то очень маленькое. – TomShreds

3

Итак ... крошечный ...

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

Много ajax. Такой вау. – samvv

3

Вот моя версия с асинхронным обратным вызовом в 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

Вы можете вЕРОЯТНОСТЕЙ ly использовать omee. Его единственный файл, содержащий многие часто используемые функции javascript, такие как ajax-запрос.

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

поднять Ajax запрос просто позвонить omee.raiseAjaxRequest

с аргументами

список

params- параметры е.г param1 = param1value & param2 = param2value

URL - URL, чтобы ударить по серверу

функционировали имя функции, которая должна быть отозваны

connType - GET/POST.

19

Вы можете создать свою собственную версию jQuery, которая включает только модули AJAX.

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

+0

Это очень хорошее предложение. Кто бы это сделал и почему? Go SE !. – Phil

+1

Спасибо @phil, недовольный любовник, возможно, – msaspence

+2

http://projects.jga.me/jquery-builder/ предполагает, что даже ajax-only jQuery 2.1.1 - 18kb gzipped и minified (полный jQuery - 28kb). Просто хотел упомянуть об этом, поскольку я был удивлен, что он был не меньше. – Keeth

Смежные вопросы