나의 Ajax 단순 패키지 단순 호출
5994 단어 JavaScriptjqueryAjaxxmljson
저 는 post 와 get 이라는 두 가지 요청 방식 을 제 공 했 습 니 다. 방법 이름 은 기억 하기 쉬 운 'doGet' 과 'doPost' 를 사 용 했 습 니 다. 용법 상 Jquery 와 유사 한 get 방법 과 post 방법 은 자바 스 크 립 트 의 대상 프로 그래 밍 을 사용 하지 않 았 을 뿐 입 니 다.
먼저 다음 두 가지 간단 한 용법 을 살 펴 보 자.
// Get
var url1 = "user/deleteUser.action?id=12";
doGet(url1, null, function(data){
//Todo something ...
alert(data);
});
// Post
var url2 = "user/addUser.action";
var formData = "username=rongxinhua&sex=male";
doPost(url, formData, function(data){
//Todo something ...
alert(data);
});
나의 Ajax 방법 라 이브 러 리 는 get 요청 과 post 요청 을 지원 하 는 동시에 텍스트 형식, XML 형식 과 JSON 형식 등 세 개의 리 턴 데이터 형식 도 지원 합 니 다. 그 밖 에 비동기, 동기 화 두 가지 대화 방식 도 지원 합 니 다.좋아, 코드 를 보 자.
/**
* XMLHttpRequest
*
* @return
*/
function initXmlHttp() {
//XMLHttpRequest
var xmlHttp = false;
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE6 IE
var activeXNames = [ "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" ];
for ( var i = 0; i < activeXNames.length; i++) {
try {
xmlHttp = new ActiveXObject(activeXNames[i]);
break;
} catch (e) {
}
}
}
if (!xmlHttp) {
alert(" XMLHttpRequest, Ajax。");
}
return xmlHttp;
}
// info/user.action
// info/user.action?id=123
// info/user.action?id=123&name=tom
// info/user.action?name=tom&name=marry
/**
* @param url
* @param data , :"key1=value1&key2=value2"
* @param callback ( )
* @param responseContentType , 3 :"TEXT","XML","JSON", ,
* , ,
* @param asyn , 2 :true( ), false( )
* , ,
*/
function doGet(url, data, responseFunction, responseContentType,asyn) {
if(asyn==undefined){
if(responseContentType!=undefined){
if(typeof responseContentType =='boolean'){
asyn = responseContentType;
}
}
}
var url = url;
if(data != null && data != '') {
if (url.indexOf("?") == -1) {
url = url + "?" + data;
} else {
url = url + "&" + data;
}
}
var xmlHttp = initXmlHttp();
xmlHttp.onreadystatechange = function() {
callbackAjax(responseFunction, responseContentType, xmlHttp);
};
if(asyn==undefined){
xmlHttp.open("GET", url, true);
}else if(asyn==false){
xmlHttp.open("GET", url, false);
}else{
xmlHttp.open("GET", url, true);
}
xmlHttp.send(null);
}
/**
*
* @param url
* @param data , :"key1=value1&key2=value2"
* @param callback ( )
* @param responseContentType , 3 :"TEXT","XML","JSON", ,
* , ,
* @param asyn , 2 :true( ), false( )
* , ,
*/
function doPost(url, data, responseFunction, responseContentType,asyn) {
if(asyn==undefined){
if(responseContentType!=undefined){
if(typeof responseContentType =='boolean'){
asyn = responseContentType;
}
}
}
var xmlHttp = initXmlHttp();
xmlHttp.onreadystatechange = function(){
callbackAjax(responseFunction, responseContentType,xmlHttp);
};
if(asyn==undefined){
xmlHttp.open("POST", url, true);
}else if(asyn==false){
xmlHttp.open("POST", url, false);
}else{
xmlHttp.open("POST", url, true);
}
xmlHttp.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded");
xmlHttp.send(data);
}
/**
* Ajax
* @param responseFunction ( )
* @param responseContentType , 3 :"TEXT","XML","JSON",
* @param xmlHttp XMLHttpRequest
* @return
*/
function callbackAjax(responseFunction, responseContentType, xmlHttp) {
//
if (xmlHttp.readyState == 4) {
// http
if (xmlHttp.status == 200) {
if (responseContentType == "XML") {
var responseXml = xmlHttp.responseXML;
responseFunction(responseXml);
} else {
var responseText = xmlHttp.responseText;
if (responseContentType == "JSON") {
var responseJson = eval("(" + responseText + ")");
responseFunction(responseJson);
} else if(responseContentType == "TEXT") {
responseFunction(responseText);
} else {
// responseContentType
if(responseText.indexOf("<")==0) {
var responseXml = xmlHttp.responseXML;
responseFunction(responseXml);
} else if(responseText.indexOf("{")==0 || responseText.indexOf("[")==0) {
var responseJson = eval("(" + responseText + ")");
responseFunction(responseJson);
} else {
responseFunction(responseText);
}
}
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.