programing

작은 Ajax JavaScript 라이브러리

yellowcard 2023. 7. 24. 22:25
반응형

작은 Ajax JavaScript 라이브러리

저는 요청을 하기 위해 작은 스크립트의 첫 줄에 추가할 매우 작은(라이너 하나) Ajax JavaScript 라이브러리를 찾고 있습니다.

이미 시도했습니다.

하지만 그들은 전혀 작동하지 않습니다.대안?

여기 있습니다. 아주 간단합니다.

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에서 도메인 간 웹 서비스 호출

AJAX 모듈만 포함하는 자체 버전의 jQuery를 구축할 수 있습니다.

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

당신은 아마 오미를 사용할 수 있습니다.이것은 ajax 요청과 같이 자주 사용되는 javascript 함수를 포함하는 단일 파일입니다.

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

아약스 요청을 제기하려면 그냥 omee.raise 아약스 요청을 호출하십시오.

논쟁이 있는.

params - param1=param1value&param2=param2value와 같은 파라미터 목록

url - 서버를 히트시키는 url

func - 다시 호출할 함수 이름

connType - GET/POST.

음... jQuery는 아마도 당신이 원하는 것보다 더 클 것입니다. 하지만 여전히 매우 좋은 옵션입니다.문서화되어 있고 지원이 잘 되어 있으며 CDN 링크를 사용하는 경우

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

클라이언트의 컴퓨터에 이미 존재하고 캐시될 가능성도 매우 높습니다.

언급URL : https://stackoverflow.com/questions/3470895/small-ajax-javascript-library

반응형