ajax() 메서드는 HTTP 요청을 통해 원격 데이터를 로드합니다.
이 방법은 jQuery의 기본 AJAX 구현입니다. 간단하고 사용하기 쉬운 상위 수준 구현을 보려면 $.get, $.post 등을 참조하세요. $.ajax()는 생성된 XMLHttpRequest 객체를 반환합니다. 대부분의 경우 유연성을 높이기 위해 덜 일반적으로 사용되는 옵션을 조작해야 하는 경우가 아니면 이 기능을 직접 조작할 필요가 없습니다.
가장 간단한 경우에는 $.ajax()를 매개변수 없이 직접 사용할 수 있습니다.
참고: 모든 옵션은 $.ajaxSetup() 함수를 통해 전역적으로 설정할 수 있습니다.
문법
jQuery.ajax([settings])
매개변수 | 설정 | 선택 사항. Ajax 요청을 구성하는 데 사용되는 키-값 쌍 모음입니다.
모든 옵션의 기본값은 $.ajaxSetup()을 통해 설정할 수 있습니다. <🎜> |
---|
jQuery.get()
使用一个HTTP GET 请求从服务器加载数据。
jQuery.get(url [,data] [,success(data,textStatus,jqXHR)] [dtaType])
url 一个包含发送请求的URL
data 发送给服务器的字符串后键值对
success() 当请求成功时回调的函数
dataType 从服务器返回的预期数据。
用法:
$.get("test.cgi", { name: "John", time: "2pm" }, function(data){ alert("Data Loaded: " + data); });
jQuery.getJSON()
使用一个HTTP GET 请求服务器加载JSON 编码的数据。
jQuery.getJSON(url [,data] [,success(data,textStatus,jqXHR)])
url 一个包含发送请求的URL
data 发送给服务器的字符串后键值对
success() 当请求成功时回调的函数
jQuery.getScript()
使用一个HTTP GET请求从服务器加载并执行一个JavaScript文件。
jQuery.getScript(url[success(script,textStatus,jqXHR)])
url 一个包含发送请求的URL
data 发送给服务器的字符串后键值对
用法:
$.getScript("ajax/test.js", function(data, textStatus, jqxhr) { console.log(data); //data returned console.log(textStatus); //success console.log(jqxhr.status); //200 console.log('Load was performed.'); });
jQuery.post([settings])
使用一个HTTP POST请求从服务器加载数据。
jQuery.post(url[,data][,success(data,textStatus,jqXHR)][,dataType])
url 一个包含发送请求的URL
data 发送给服务器的字符串后键值对
success() 当请求成功时回调的函数
用法:
$.post("test.php", { name: "John", time: "2pm" }, function(data) { alert("Data Loaded: " + data); });
.load()
从服务器载入数据并且将返回的HTML代码并插入至匹配的元素中。
.load(url[,data][,complete(responseText,textStatus,XMLHttpRequest)])
url 一个包含发送请求的URL
data 发送给服务器的字符串后键值对
complete 当请求成功时回调的函数
用法:
$('#result').load('ajax/test.html #container');
jQuery.ajax()
执行一个异步的HTTP(ajax)的请求。
参数:
url 类型: Sting 发送请求的地址(默认当前页面)
type 类型:Sting (默认为GET) 请求方式(”POST“或”GET“)
timeout 类型:Number 设置请求超时时间(毫秒),此设置默认覆盖全局。
async 类型:Boolean 默认设置(true)默认设置下所有请求均为一步请求,如果需要同步请求,设置为false。
beforeSend 类型:function 发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。XMLHttpRequest 对象是唯一的参数。
cache 类型:Boolean 默认为(true) 设置为false 将不会从浏览器缓存中加载请求信息。
complete 类型:Function 请求完成后回调函数,(请求成功或失败时均调用)参数: XMLHttpRequest 对象,成功信息字符串。function ( XMLHttpRequest, textStatus) {this; // the options for this ajax request}
contentType 类型为:String 发送信息至服务器时内容编码类型,默认值适合大多数应用场合。
data 类型:Object String 发送到服务器的数据。将自动转换为请求字符串格式,GET请求附加在URL后
dataType 类型:String 预期服务器返回的数据类型, ”xml“返回XML文档。”html“返回纯文本信息,包含script 元素。”script“返回纯文本JavaScript 代码,不会自动缓存 结果。”json“返回JSON 数组。”jsonp“JSONP格式。
error 类型:function 请求失败时将调用此方法。
global 类型:Boolean 是否触发全局AJAX事件。默认为(true) 设置为false 将不会触发全局ajax 事件,可用于控制不同的AJAX事件。
ifModified 类型:Boolean 默认为false 仅在服务器数据改变时获取新数据。
processData 类型:Boolean 默认为(true)默认情况下,发送的数据发送的数据将被转换为对象(技术上讲并非字符串) 以配合默认内容类型 "application/x-www-form- urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。
success 类型:Function 请求成功后回调函数。这个方法有两个参数:服务器返回数据,返回状态。
$(document).ready(function() { jQuery("#clearCac").click(function() { jQuery.ajax({ url: "/Handle/Do.aspx", type: "post", data: { id: '0' }, dataType: "json", success: function(msg) { alert(msg); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); }, complete: function(XMLHttpRequest, textStatus) { this; // 调用本次AJAX请求时传递的options参数 } }); }); });
오류 이벤트에서 반환된 첫 번째 매개변수 XMLHttpRequest에는 몇 가지 유용한 정보가 있습니다.
XMLHttpRequest.readyState:
상태 코드
0 - (초기화되지 않음) send() 메서드가 아직 호출되지 않았습니다
1 - (로드 중) send() 메소드가 호출되었으며 요청이 전송되고 있습니다
2 - (로딩 완료) send() 메소드가 실행되어 모든 응답 내용을 수신했습니다
3 - (대화형) 응답 내용 파싱
4 - (완료) 응답 내용 파싱이 완료되어 클라이언트에서 호출 가능
XMLHttpRequest.status:
1xx-정보 프롬프트
이러한 상태 코드는 임시 응답을 나타냅니다. 클라이언트는 일반 응답을 받기 전에 하나 이상의 1xx 응답을 받을 준비를 해야 합니다.
100-계속.
101-스위치 프로토콜.
2xx-성공
이 유형의 상태 코드는 서버가 클라이언트 요청을 성공적으로 수락했음을 나타냅니다.
200-확인. 클라이언트 요청이 성공했습니다.
201-생성.
202-승인.
203-신뢰할 수 없는 정보입니다.
204-콘텐츠가 없습니다.
205-콘텐츠 재설정.
206-콘텐츠의 일부입니다.
3xx-리디렉션
클라이언트 브라우저는 요청을 이행하기 위해 추가 조치를 취해야 합니다. 예를 들어, 브라우저는 서버에서 다른 페이지를 요청하거나 프록시 서버를 통해 요청을 반복해야 할 수 있습니다.
301 - 개체가 영구적으로 이동되었습니다. 즉, 영구적으로 리디렉션되었습니다.
302 - 개체가 일시적으로 이동되었습니다.
304-수정되지 않았습니다.
307 - 임시 리디렉션.
4xx-클라이언트 오류
오류가 발생했으며 클라이언트에 문제가 있는 것 같습니다. 예를 들어, 클라이언트가 존재하지 않는 페이지를 요청하는데 클라이언트가 유효한 인증 정보를 제공하지 않습니다. 400 - 잘못된 요청입니다.
401 - 액세스가 거부되었습니다. IIS는 보다 구체적인 오류 원인을 나타내는 다양한 401 오류를 정의합니다. 이러한 특정 오류 코드는 브라우저에 표시되지만 IIS 로그에는 표시되지 않습니다.
401.1 - 로그인에 실패했습니다.
401.2 - 서버 구성으로 인해 로그인이 실패했습니다.
401.3 - 리소스에 대한 ACL 제한으로 인해 승인되지 않았습니다.
401.4 - 필터 인증에 실패했습니다.
401.5-ISAPI/CGI 애플리케이션 인증에 실패했습니다.
401.7 – 웹 서버의 URL 인증 정책에 의해 액세스가 거부되었습니다. 이 오류 코드는 IIS6.0에만 해당됩니다.
403 - 금지됨: IIS는 오류의 보다 구체적인 원인을 나타내는 다양한 403 오류를 정의합니다.
403.1 - 실행 액세스가 금지되었습니다.
403.2 - 읽기 액세스가 금지되었습니다.
403.3 - 쓰기 액세스가 금지되었습니다.
403.4 - SSL이 필요합니다.
403.5 - SSL128이 필요합니다.
403.6 - IP 주소가 거부되었습니다.
403.7 - 클라이언트 인증서가 필요합니다.
403.8 - 사이트 액세스가 거부되었습니다.
403.9-사용자가 너무 많습니다.
403.10 - 구성이 잘못되었습니다.
403.11-비밀번호 변경.
403.12 - 매핑 테이블에 대한 액세스가 거부되었습니다.
403.13 - 클라이언트 인증서가 취소되었습니다.
403.14 - 디렉터리 목록이 거부되었습니다.
403.15 - 클라이언트 액세스 권한이 초과되었습니다.
403.16 - 클라이언트 인증서가 신뢰할 수 없거나 유효하지 않습니다.
403.17 - 클라이언트 인증서가 만료되었거나 아직 유효하지 않습니다.
403.18 - 요청한 URL을 현재 응용 프로그램 풀에서 실행할 수 없습니다. 이 오류 코드는 IIS6.0에만 해당됩니다.
403.19 - 이 응용 프로그램 풀의 클라이언트에 대해 CGI를 실행할 수 없습니다. 이 오류 코드는 IIS6.0에만 해당됩니다.
403.20-여권 로그인에 실패했습니다. 이 오류 코드는 IIS6.0에만 해당됩니다.
404 - 찾을 수 없음.
404.0-(없음) – 파일 또는 디렉터리를 찾을 수 없습니다.
404.1 - 요청한 포트에서 웹 사이트에 액세스할 수 없습니다.
404.2 - 이 요청은 웹 서비스 확장 잠금 정책에 의해 차단됩니다.
404.3-MIME 매핑 정책은 이 요청을 차단합니다.
405-이 페이지에 액세스하는 데 사용된 HTTP 동사는 허용되지 않습니다(메서드가 허용되지 않음)
406 - 클라이언트 브라우저가 요청된 페이지의 MIME 유형을 허용하지 않습니다.
407 - 프록시 인증이 필요합니다.
412 - 전제 조건이 실패했습니다.
413 – 요청 엔터티가 너무 큽니다.
414 - 요청 URI가 너무 깁니다.
415 – 지원되지 않는 미디어 유형입니다.
416 – 요청한 범위를 충족할 수 없습니다.
417 – 실행이 실패했습니다.
423 – 잠긴 오류입니다.
5xx-서버 오류
서버에 오류가 발생하여 요청을 완료할 수 없습니다.
500 - 내부 서버 오류입니다.
500.12 - 웹 서버에서 애플리케이션을 다시 시작하는 중입니다.
500.13 - 웹 서버 사용량이 너무 많습니다.
500.15 - Global.asa에 대한 직접 요청은 허용되지 않습니다.
500.16 – UNC 인증 자격 증명이 잘못되었습니다. 이 오류 코드는 IIS6.0에만 해당됩니다.
500.18 – URL 권한 부여 저장소를 열 수 없습니다. 이 오류 코드는 IIS6.0에만 해당됩니다.
500.100 - 내부 ASP 오류입니다.
501 - 헤더 값이 구현되지 않은 구성을 지정합니다.
502 - 웹 서버가 게이트웨이 또는 프록시 서버로 작동하는 동안 잘못된 응답을 받았습니다.
502.1-CGI 애플리케이션 시간이 초과되었습니다.
502.2-CGI 애플리케이션 오류.
503 - 서비스를 이용할 수 없습니다. 이 오류 코드는 IIS6.0에만 해당됩니다.
504-게이트웨이 시간 초과.
505 - HTTP 버전은 지원되지 않습니다.
jQuery.param()
URL 쿼리 문자열 또는 Ajax 요청과 함께 사용할 배열, 일반 개체 또는 jQuery 개체의 직렬화된 표현을 만듭니다.
jQuery.param(obj)
obj 직렬화를 위한 배열, 일반 객체 또는 jQuery 객체입니다.
jQuery.param( obj, traditional )
obj 직렬화를 위한 배열, 일반 객체 또는 jQuery 객체입니다.
전통
전통적인 "얕은" 직렬화가 수행되는지 여부를 나타내는 부울 값입니다.
$.param({ a: [2,3,4] }) // "a[]=2&a[]=3&a[]=4"
$.param({ a: { b:1,c:2 }, d: [3,4,{ e:5 }] }) // "a[b]=1&a[c]=2&d[]=3&d []=4&d[2][e]=5"