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