복붙노트

[JQUERY] Ajax jquery 성공 범위

JQUERY

Ajax jquery 성공 범위

해결법


  1. 1.첫 번째 새로는 예약 된 단어입니다. 해당 변수의 이름을 바꿔야합니다.

    첫 번째 새로는 예약 된 단어입니다. 해당 변수의 이름을 바꿔야합니다.

    귀하의 질문에 답변하려면 예, 성공 콜백 외부의 변수에 저장하고 성공 처리기 코드 내에서 참조해야합니다.

    var that = this;
    $.ajax({
        // ...
        success: function(resp) {
            if(resp == 1) {
                $(that).siblings('.old').html($new);
            }
        }
    })
    

    이것은 폐쇄라고합니다.


  2. 2.컨텍스트 설정을 http://api.jquery.com/jquery.ajax/와 같이 사용해야합니다.

    컨텍스트 설정을 http://api.jquery.com/jquery.ajax/와 같이 사용해야합니다.

    function doop(){
        var old = $(this).siblings('.old').html();
        var newValue = $(this).siblings('.new').val();
    
        $.ajax({
            url: 'doop.php',
            type: 'POST',
            context: this,
            data: 'before=' + old + '&after=' + newValue,
            success: function(resp) {
                if(resp == 1) {
                    $(this).siblings('.old').html(newValue);
                }
            }
        });
    
        return false;
    }
    

    "이"는 성공 범위로 이전되고 예상대로 행동합니다.


  3. 3.이것은 실행 기능이 적용된 객체에 바인딩됩니다. 이는 일부 Ajax 응답 객체 또는 전역 개체 (창) 또는 다른 것 ($ .AJAX의 구현에 따라 다름) 일 수 있습니다.

    이것은 실행 기능이 적용된 객체에 바인딩됩니다. 이는 일부 Ajax 응답 객체 또는 전역 개체 (창) 또는 다른 것 ($ .AJAX의 구현에 따라 다름) 일 수 있습니다.

    실제로 성공 함수를 정의하기 전에이 값을 캡처 할 수있는 방법이 필요합니다. 폐쇄를 만드는 것은 이것을하는 방법입니다. 별도의 변수 (예 : 자체)를 정의해야합니다.

    function doop() {
        var old = $(this).siblings('.old').html();
        var new = $(this).siblings('.new').val();
    
        var self = this;
    
        $.ajax({
            url: 'doop.php',
            type: 'POST',
            data: 'before=' + old + '&after=' + new,
            success: function(resp) {
                if(resp == 1) {
                    $(self).siblings('.old').html(new);
                }
            }
        });
    
        return false;
    }
    

    성공 함수는 호출 될 때 자체의 가치를 유지하고 예상대로 작동해야합니다.

  4. from https://stackoverflow.com/questions/1570146/ajax-jquery-success-scope by cc-by-sa and MIT license