programing

수집되지 않은 유형 오류: $.ajax(...).성공은 함수가 아닙니다.

fastcode 2023. 3. 26. 11:52
반응형

수집되지 않은 유형 오류: $.ajax(...).성공은 함수가 아닙니다.

저는 jQuery를 처음 접하는 사람입니다.또한 jQuery에 관한 오래된 튜토리얼을 사용하고 있습니다.node.js다음 스니펫을 사용합니다.

$(function () {    
    var roomId;

    $.ajax({
        type: "GET",
        url: "/api/rooms"
    }).success(function (rooms) { 
        roomId = rooms[0].id;
        getMessages();
        $.each(rooms, function (key, room) {
            var a = '<a href="#" data-room-id="' + room.id + '" class="room list-group-item">' + room.name + '</a>';
            $("#rooms").append(a);
        });

    });

    [...]       

});

단, 이 에러는 발생합니다.

수집되지 않은 유형 오류: $.ajax(...).성공은 함수가 아닙니다.

}).success(function (rooms) {

여기서 뭐가 잘못됐을까?

Ajax에 대한 콜은 다음과 같습니다.

$.ajax({
    type: "GET",
    url: "/api/rooms",
    success: function (rooms) { 

    }
});

성공 함수는 메서드 체인이 아니라 사전 인수의 항목 중 하나입니다.

당신의 코드는 정확합니다. 문제 없습니다.

그러나 .success() 메서드를 허용하지 않는 새로운 jquery 라이브러리를 포함할 수 있습니다.

새로운 버전의 jquery 용도의 경우

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<script>
    $.ajax({
        type: "GET",
        url: "/api/rooms",
        success: function (rooms) {

        }
    });
</script>

오래된 jquery를 사용하는 경우 .success() 메서드는 문제없이 실행됩니다.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

<script>
    $.ajax({

        url: "/api/rooms",
        method: "GET",
        data: {'datavar': datavalue}

    }).success(function (rooms) {

        console.log("successfully run ajax request..." + rooms);

    }).done(function () {

        console.log("I am from done function");

    }).fail(function () {

        console.log("I am from fail function.");

    }).always(function () {

        console.log("I am from always function");

    });
</script>

서류에 의하면

jqXHR.success(),jqXHR.error(),그리고.jqXHR.complete()콜백 메서드는 jQuery 3.0에서 삭제되었습니다.

사용할 수 있습니다.jqXHR.done(),jqXHR.fail(),그리고.jqXHR.always()대신.


이러한 메서드는 원래 jQuery에 추가되었습니다.$.ajax옵션 콜백으로서 다음과 같이 사용됩니다.

$.ajax({
    url      : 'mypage.php',
    success  : function() { ... },
    error    : function() { ... },
    complete : function() { ... }
});

그러나 사용자 간의 혼란으로 인해 나중에 동일한 이름의 체인 가능한 메서드도 함께 제공되었습니다.

$.ajax().success(  function() { ... })
        .error(    function() { ... })
        .complete( function() { ... })

이러한 메서드는 jQuery 1.8 이후 사용되지 않으며 지연 객체 및 이후 약속 사용으로 인해 jQuery 3.0에서 완전히 제거되었습니다.

jqXHR.success(),jqXHR.error(),그리고.jqXHR.complete()쇠사슬에 의해 감시되고 있다jqXHR.done(),jqXHR.fail(),그리고.jqXHR.always()메서드, 옵션콜백은 현재도 사용할 수 있습니다.

jQuery 3.0에서 jQuery의 Deferred 개체는 Promise/A+에도 준거하고 있습니다.즉, 이들은 "그때 사용할 수 있으며"와 함께 사용할 수 있습니다.then()뿐만 아니라.

$.ajax("/status").then(function(data) {

}).catch(function(error) {

});

언급URL : https://stackoverflow.com/questions/39042085/uncaught-typeerror-ajax-success-is-not-a-function

반응형