Небольшая библиотека JavaScript Ajax

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

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

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

6 ответов

Решение

Вот, пожалуйста, довольно просто:

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

Документация здесь

Пример:

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

Обновить:

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

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

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

Справка: вызов междоменных веб-сервисов в AJAX

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

https://github.com/jquery/jquery
https://github.com/jquery/jquery

Настолько малы...

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

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

Вы, вероятно, можете использовать оми. Это единственный файл, содержащий много часто используемых функций JavaScript, таких как запрос ajax.

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

чтобы вызвать ajax-запрос, вы просто вызываете omee.raiseAjaxRequest

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

список параметров params, например, param1= значение param1 ¶m2= значение param2

URL - URL, чтобы попасть на сервер

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

connType - GET/POST.

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

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

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

Другие вопросы по тегам