Programing

$ .post와 $ .ajax의 차이점은 무엇입니까?

crosscheck 2020. 12. 7. 07:49
반응형

$ .post와 $ .ajax의 차이점은 무엇입니까?


데이터 매개 변수와 관련하여 차이점이 무엇인지 아는 사람이 있는지 궁금합니다.

내 데이터 매개 변수로 사용하고 작동 하는 $.post메서드가 $('#myform').serialize()있습니다.

$.ajax()접근 방식을 사용하여 똑같이 시도하면 데이터 매개 변수가 올바르게 표시되지 않으므로 작동하지 않습니다.

누구든지 차이점을 알고 위의 대신 사용할 수 .serialize있습니까?


이 게시물은 도움이 될 것입니다.

포럼 링크

간단히 말해서 :

$.post( "/ajax", {"data" : json }) 

다음과 같습니다.

$.ajax({ 
  type: "POST", 
  url: "/ajax", 
  data: {"data": json} 
}); 

여기서 문제는 사실 $.ajax()이 작동하지 않는다는 것이 아니라 Ajax 요청에서 유형 매개 변수를 설정하지 않았고 기본값이 GET 요청으로 설정되어 있기 때문입니다. 데이터는 get에 대한 쿼리 문자열을 통해 전송되며 백엔드에서이를 게시 매개 변수로 예상하면 데이터를 읽지 않습니다.

$.post은 ( $.ajax()는) type세트 로만 호출됩니다 . 읽기 문서를 그리고 당신은 볼 수 $.ajax()내가 위에서 언급 한 바와 같이 GET에 기본값을.

jQuery 문서 jQuery.post 페이지 로 이동 하면 유형이 설정된 $ .ajax 요청이 표시됩니다. 다시 문서를 읽으십시오.


온라인 문서를 다시 읽은 후 $ .ajax 대신 $ .post를 사용하기로 결정했습니다.

$ .ajax 메소드의 데이터 매개 변수는 $ .post 메소드와 다른 작업을 수행하지만 정확히 무엇인지는 확실하지 않지만 차이점이 있습니다.

$ .ajax를 사용하고 싶었던 유일한 이유는 이벤트를 처리 할 수 ​​있기를 원했고 $ .post로 그렇게 할 수 있다는 것을 몰랐기 때문입니다.

여기에 내가 끝낸 것입니다

function GetSearchItems() {
    var url = '@Url.Action("GetShopSearchResults", "Shop", New With {.area = "Shop"})';
    var data = $("#ShopPane").serialize();
    // Clear container
    $('#shopResultsContainer').html('');
    // Retrieve data from action method
    var jqxhr = $.post(url, data);
    // Handle results
    jqxhr.success(function(result) {
        //alert("ajax success");
        $('#shopResultsContainer').html(result.ViewMarkup);
    });
    jqxhr.error(function() {
        //alert("ajax error");
    });
    jqxhr.complete(function() {
        //alert("ajax complete");
    });

    // Show results container
    $("#shopResultsContainer").slideDown('slow');
}

JQuery 3.x

jqXHR.success (), jqXHR.error () 및 jqXHR.complete () 콜백 메서드는 jQuery 3.0부터 제거되었습니다. 대신 jqXHR.done (), jqXHR.fail () 및 jqXHR.always ()를 사용할 수 있습니다.

var jqxhr = $.post(url, data);
// Handle results
jqxhr.done(function(result) {
    //alert("ajax success");
});
jqxhr.fail(function() {
    //alert("ajax error");
});
jqxhr.always(function() {
    //alert("ajax complete");
});

https://api.jquery.com/jquery.post/


이것을 데이터 매개 변수로 지정하고 있습니까? 다음을 기대 $.post하는 속기입니다 $.ajax.

$.ajax({
    type : 'POST',
    url : url,
    data : data,
    success : success,
    dataType : dataType
});

보완 적으로, 수용된 답변에서 " $ .ajax 메소드의 데이터 매개 변수는 $ .post 메소드와 다른 작업을 수행하지만 정확히 무엇인지는 확실하지 않지만 차이점이 있습니다. "라고 언급되어 있습니다.

사용 해보세요 :

    { 
        ... 
        data: JSON.stringify(yourJsonData), 
        ... 
    }

그렇지 않으면 json 객체가 url 인코딩 문자열로 페이로드에 삽입됩니다.


에서 $.ajax당신을 동기화 할 수 있지만 그것은 가능하지 않다 $.post기능. 동기화한다는 것은 반환 된 결과를 얻을 수 있음을 의미합니다.

var tmp;
$.ajax({
    'async': false,
    'type': "POST",
    'global': false,
    'dataType': 'html',
    'url': "Your Url",
    'data': {'type': 'data'},
    'success': function (data) {
        tmp = data;
    }
});
alert(tmp);

참고URL : https://stackoverflow.com/questions/12820074/difference-between-post-and-ajax

반응형