javascript
  • jquery
  • 2009-04-05 4 views 1 likes 
    1
    function modifyDatabase(tabla, id, objData, callback, arrayCallback){ 
        $.ajax({ 
         url: 'modifyDatabase.php', 
         type: "POST", 
         dataType: "json", 
         data: 'tabla='+tabla+'&id='+id+strData, 
         success: function(data){    
          callback(data); 
         }, 
        }); 
    } 
    
    var obj = { 
        set: function (data){ 
         alert(this.var1); 
        }, 
        var1: 100 
    } 
    
    function modifyDatabase('', '', '', obj.set, ''); 
    

    이 스크립트를 실행하면 this.var1이 설정되지 않았거나 정의되지 않았 음을 알리는 오류 메시지가 표시됩니다. 비동기 응답이 아닌 다른 곳에서 메서드를 호출하면 정상적으로 작동합니다.jQuery의 ajax.success에서 객체의 메서드를 호출 할 때 발생하는 문제

    'set'메서드가 'obj'내부에없는 것처럼 보입니다.

    무슨 일입니까?

    답변

    2

    이 방법으로 참조를 전달하면 실제로 객체에 대한 참조도 전달하지 않습니다. 빠른 수정은 클로저를 통해 실제 개체를 참조하는 익명의 함수를 만드는 것입니다. 여기가 작동하지 않은 이유를 잘 설명이다 : 요컨대 http://bitstructures.com/2007/11/javascript-method-callbacks

    , 당신은 할 필요가 :

    function modifyDatabase('', '', '', function(){obj.set();}, ''); 
    
    관련 문제