jQuery ajax - post() 메서드
예제
test.php 웹 페이지를 요청하여 반환 값을 무시합니다:
$.post("test.php");
TIY 예제
AJAX POST 요청을 통해 div 요소의 텍스트를 변경합니다:
$("input").keyup(function(){ txt=$("input").val(); $.post("demo_ajax_gethint.asp",{suggest:txt},function(result){ $("span").html(result); }); });
정의와 사용법
post() 메서드는 HTTP POST 요청을 통해 서버에서 데이터를 가져옵니다.
문법
jQuery.post(url,data,success(data, textStatus, jqXHR),dataType)
파라미터 | 설명 |
---|---|
url | 필수. 요청을 보내는 URL을 정의합니다. |
data | 선택 사항. 매핑 또는 문자열 값. 요청과 함께 서버로 전송되는 데이터를 정의합니다. |
success(data, textStatus, jqXHR) | 선택 사항. 요청 성공 시 실행되는 콜백 함수를 정의합니다. |
dataType |
선택 사항. 예상되는 서버 응답 데이터 타입을 정의합니다. 기본적으로 지능적 판단을 수행합니다(xml, json, script 또는 html)。 |
상세 설명
이 함수는 단축된 Ajax 함수로, 다음과 동일합니다:
$.ajax({ type: 'POST', url: url, data: data, success: success, dataType: dataType });
응답의 다른 MIME 타입에 따라 success 콜백 함수에 전달하는 반환 데이터도 다릅니다. 이 데이터는 XML 루트 요소, 텍스트 문자열, JavaScript 파일 또는 JSON 객체일 수 있으며, success 콜백 함수에 응답의 텍스트 상태도 전달할 수 있습니다.
jQuery 1.5에서는 success 콜백 함수에 전달할 수 있습니다 jqXHR 对象(jQuery 1.4에서는 XMLHttpRequest 객체를 전달합니다)。
대부분의 구현은 success 함수를 정의합니다:
$.post("ajax/test.html", function(data) { $(".result").html(data); });
本例读取被请求的 HTML 片段,并插入页面中。
通过 POST 读取的页面不被缓存,因此 jQuery.ajaxSetup() 中的 cache 和 ifModified 选项不会影响这些请求。
注释:由于浏览器安全方面的限制,大多数 "Ajax" 请求遵守同源策略;请求无法从不同的域、子域或协议成功地取回数据。
注释:如果由 jQuery.post() 发起的请求返回错误代码,那么不会有任何提示,除非脚本已调用了全局的 .ajaxError() 方法。或者对于 jQuery 1.5,jQuery.post() 返回的 jqXHR 对象的 .error() 方法也可以用于错误处理。
jqXHR 对象
对于 jQuery 1.5,所有 jQuery 的 AJAX 方法返回的是 XMLHTTPRequest 对象的超集。由 $.post() 返回的 jQuery XHR 对象或 "jqXHR,"实现了约定的接口,赋予其所有的属性、方法,以及约定的行为。出于对由 $.ajax() 使用的回调函数名称便利性和一致性的考虑,它提供了 .error(), .success() 以及 .complete() 方法。这些方法使用请求终止时调用的函数参数,该函数接受与对应命名的 $.ajax() 回调函数相同的参数。
jQuery 1.5 中的约定接口同样允许 jQuery 的 Ajax 方法,包括 $.post(),来链接同一请求的多个 .success()、.complete() 以及 .error() 回调函数,甚至会在请求也许已经完成后分配这些回调函数。
// 请求生成后立即分配处理程序,请记住该请求针对 jqxhr 对象 var jqxhr = $.post("example.php", function() { alert("success"); }) .success(function() { alert("second success"); }) .error(function() { alert("error"); }) .complete(function() { alert("complete"); }); // 여기서 다른 작업을 수행 // 위의 요청에 대해 또 다른 완료 함수 설정 jqxhr.complete(function(){ alert("second complete"); });
더 많은 예제
예제 1
test.php 페이지를 요청하고 추가 데이터를 함께 전송합니다(반환 값을 여전히 무시합니다):
$.post("test.php", { name: "Bill", time: "2pm" } );
예제 2
서버에 데이터 배열을 전달합니다(반환 값을 여전히 무시합니다):
$.post("test.php", { 'choices[]': ["Jon", "Susan"] });
예제 3
ajax 요청을 통해 양식 데이터를 전송합니다:
$.post("test.php", $("#testform").serialize());
예제 4
페이지 test.php에서 반환하는 결과를 출력합니다(반환된 내용에 따라 HTML 또는 XML):
$.post("test.php", function(data){ alert("Data Loaded: " + data); });
예제 5
test.php 페이지에 데이터를 전송하고 결과를 출력합니다(반환된 내용에 따라 HTML 또는 XML):
$.post("test.php", { name: "Bill", time: "2pm" }, function(data){ alert("Data Loaded: " + data); });
예제 6
test.php 페이지의 내용을 XMLHttpResponse 객체로 저장하고 process() JavaScript 함수를 통해 처리합니다:
$.post("test.php", { name: "Bill", time: "2pm" }, function(data){ process(data); }, "xml");
예제 7
test.php 페이지에서 반환하는 json 형식의 내용을 얻습니다:
$.post("test.php", { "func": "getNameAndTime" }, function(data){ alert(data.name); // Bill console.log(data.time); // 2pm }, "json");