2013-03-25 5 views
-2

"save"와 "relate"라는 두 가지 주요 메소드가있는 객체가있는 프로젝트에서 jQuery ajax 호출을 사용하여 서버에 충돌하는 중입니다.

두 가지 메소드 모두 콜백 함수를 매개 변수로 사용하지만 Chrome 개발 도구를보고 Save/Relate 게시물을 모두보고 서버에서 유효한 데이터를 반환하더라도 콜백 메소드 중 하나만 실행됩니다. 여기

내가 함께 일하고 있어요 세 가지이다 : 나는 (request.relate에서) 두 번째 콜백이 발생하지 않는 이유를 모르겠어요

Entity.prototype.save = function(callback) 
{ 
    var self = this; 
    $.ajax({ 
     url: '/Entity/Create', 
     type: 'POST', 
     dataType: 'json', 
     contentType: 'application/json; charset=utf-8', 
     data: JSON.stringify(model), 
     success: function (data){}, 
     error: function (xhr, status, err) { }, 
     complete: function (data) 
     { 
      console.log(self.get('_id') + ' saved.') 
      if(callback) 
        callback(data.responseText); 
     } 
    }); 
} 

Entity.prototype.relate = function(relatedEntityId, isRelate, callback) 
{ 
    var self = this; 
    var action = isRelate ? 'Relate' : 'Unrelate'; 

    $.ajax({ 
     url: '/Entity/' + action, 
     type: 'POST', 
     dataType: 'json', 
     contentType: 'application/json; charset=utf-8', 
     data: JSON.stringify({ primaryEntityId: self._id.value, relatedEntityId: relatedEntityId }), 
     done: function (data) { }, 
     fail: function (xhr, status, err) { }, 
     always: function (data) 
     { 
      console.log(self.get('_id') + 'related to ' + relatedEntityId); 
      if(callback) 
       callback(data.responseText); 
     } 
    }); 
} 


// from main code: 

entity.save(function (id) // this callback fires 
{ 
    // request is a previously saved 'entity' 
    request.relate(id, true, function (id) // this callback does not 
    { 
     console.log('related callback completed.'); 
    }); 
}); 

는 $ 아약스 호출이 설정된 경우 ('complete'핸들러에서 콜백이 발생 함)

Chrome의 최신 버전 (25.0.1364.172 m)에서 테스트하고 있으며 Firefox 19에서도 동일한 결과를 테스트했습니다.

답변

5

donefailalways은 유효한 아약스 속성이 아니며 지연된 객체를위한 것입니다.

error/success/complete를 사용해야합니다.

+0

나는 바보가된다. 내 실수를 지적 해 주셔서 감사합니다. 내가 스스로 투표 할 수 있다면, 나는 그렇게 할 것이다. – keithhamilton

+1

정확한 답변 표시 : – iAmClownShoe

+0

5 분을 기다려야했습니다. 확실히 정확했습니다. – keithhamilton

관련 문제