Я ищу очень маленькую (одну линейку) библиотеку JavaScript Ajax для добавления в первую строку небольшого script, чтобы сделать некоторые запросы.
Я уже пробовал:
Но они вообще не работают. Альтернативы?
Я ищу очень маленькую (одну линейку) библиотеку JavaScript Ajax для добавления в первую строку небольшого script, чтобы сделать некоторые запросы.
Я уже пробовал:
Но они вообще не работают. Альтернативы?
Здесь вы идете, довольно просто:
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()
Update:
Для выполнения междоменного скриптинга вам придется либо обратиться к локальному прокси-серверу на стороне сервера (который читает и эхо удалять данные), либо, если ваша удаленная служба возвращает JSON, используйте этот метод:
var s = document.createElement('script')
s.src = 'remotewebservice.json';
document.body.appendChild(s);
Поскольку JSON по существу является объектом или массивом JavaScript, это действительный источник. Вы теоретически должны иметь возможность напрямую обращаться к удаленной службе. Я не тестировал это, но, похоже, это приемлемая практика:
Вы можете создать свою собственную версию jQuery, которая включает только модули AJAX.
https://github.com/jquery/jquery#how-to-build-your-own-jquery
https://github.com/jquery/jquery#modules
Итак... крошечный...
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) });
Возможно, вы можете использовать omee. Его единственный файл, содержащий многие часто используемые функции javascript, такие как ajax-запрос.
https://github.com/agaase/omee/blob/master/src/omee.js
чтобы вызвать запрос ajax, который вы просто вызываете omee.raiseAjaxRequest
с аргументами
список параметров параметров, например param1 = param1value & param2 = param2value
url - url, чтобы попасть на сервер
имя функциональной функции, которое должно быть вызвано назад
connType - GET/POST.
Хорошо...... jQuery, вероятно, больше, чем вы хотите, но, возможно, это очень хороший вариант. Он хорошо документирован, хорошо поддерживается, и если вы используете ссылку CDN
http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js
он даже очень вероятно присутствовать и кэшироваться на клиентской машине уже.