Ajax 에 대해 서 알 아야 할 부분.
ajax 의 사용 은 서버 에서 비동기 적 으로 정 보 를 얻 을 수 있 습 니 다. 사용자 가 클릭 하면 페이지 를 새로 고치 지 않 아 도 새로운 데 이 터 를 얻 을 수 있 습 니 다.
XHR 에 대한 브 라 우 저의 지원 을 위해 다음 과 같은 방법 을 사용 합 니 다.
var xmlhttp;
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{
// IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
전체적으로 말 하면 우 리 는 xhr 방법 을 사용 하여 서버 에 요청 을 하고 데 이 터 를 되 돌려 받 으 며 페이지 의 부분 새로 고침 을 실현 하고 데 이 터 를 변경 할 뿐이다.
여기 서 우 리 는 주로 원생 js 로 jquery 와 유사 한 ajax 요청 을 어떻게 포장 하 는 지 연구 합 니 다. 구체 적 인 ajax 세부 방법 은 여러분 이 인터넷 에서 조회 하거나 고도 3 에서 상세 하 게 설명 할 수 있 습 니 다.
//toData data , URL
function toData(obj){
if (obj == null){
return obj;
}
var arr = [];
for (var i in obj){
var str = i+"="+obj[i];
arr.push(str);
}
return arr.join("&");
}
function ajax(opts){
// ajax ,
var xhr = null,
abortTimeout = null,
empty = function(){},
ajax_url = "",
opts = {
type : ( opts.type && opts.type.toUpperCase() ) || "GET",
url : opts.url || "",
data : opts.data || "",
dataType : opts.dataType || "json",
success : opts.success || empty,
err :opts.error || empty,
timeout : opts.timeout || 30000 // : 30s
};
// xhr
if (window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}
else{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
//
opts.data = toData(opts.data);
// , URL
if(opts.type == "GET"){
if(opts.url.indexOf("?")>-1){
if(opts.data == ""){
ajax_url = opts.url;
}else{
ajax_url = opts.url + "&" +opts.data;
}
}else{
ajax_url = opts.url + "?" + opts.data;
}
xhr.open('GET',ajax_url,true);
xhr.send();
}else(opts.type == "POST") {
xhr.open('POST',opts.url,true);
// html post , http
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(opts.data);
}
//
xhr.onreadystatechange = function(){
/*
** readyState , onreadystatechange
** readyState XMLHttpRequest
** 0 :
** 1 :
** 2 :
** 3 :
** 4 : ,
*/
if(xhr.readyState == 4){
var res,
error;
xhr.onreadystatechange = empty;
clearTimeout(abortTimeout);
if((xhr.status >= 200 && xhr.status < 300) ||xhr.status ==304){
res = xhr.responseText;
try{
if(opts.type == "GET"){
if(opts.dataType == "json"){
res = JSON.parse(xhr.responseText);
}else if(opts.dataType == "script") {
eval(res);
}else if(opts.dataType == "xml"){
res = xhr.responseXML;
}
}
}catch(e) {
error = e;
}
if(error){
opts.error(error,'parsererror',xhr);
}else{
opts.success(res);
}
}else{
opts.error(xhr.statusText || 'unknown' ,'status:' +xhr.status,xhr);
}
}
};
if(opts.timeout > 0){
xhr.ontimeout = function(){
opts.error('Request.timeout','timeout',xhr);
}
}
return xhr;
}
module.exports = ajax;
이 패키지 의 ajax 요청 을 호출 하 겠 습 니 다.
ajax({
url : url,
dataType : 'json',
data : {
"param1" : "111",
"param2" : "222"
},
success: function(result){
console.log(result);
},
timeout: 30000,
error : function(error,type,xhr){
console.log("error" : error,"type:",type,"xhr:",xhr);
}
});
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.