이것은 나를 미치게했습니다. 사용자 인증을 위해 JSON 끝점을 호출하는 약속이 있습니다. 콘솔에서이 호출이 이제 서버를 때리고 200 OK
을 반환하는 것을 볼 수 있습니다. 서버 로그를 꼬집어서 200
상태를 반환하기 때문에 요청이 수신 중임을 알 수 있습니다.Ember 1.0.0에서 약속 - 성공 콜백이 실행되지 않음
그러나 응답을 처리 할 때마다 내 fail()
콜백이 매번 실행되고 핸들 바 템플릿을 업데이트합니다. 이는 서버에 따라 표면 상으로는 약속이 성공하더라도 마찬가지입니다. 잘못된 암호를 입력하면 서버가 401
을 반환합니다. 따라서 200
은 예상되는 동작입니다.
다음은 Ember 컨트롤러입니다. 이는 폼에서 발생하는 save
액션을 처리합니다.
Malinko.SessionsEditController = Ember.ObjectController.extend({
actions: {
save: function() {
var self = this;
this.set('errorMessage', null);
var data = {
email: this.get('email'),
password: this.get('password'),
api: 'true'
};
function done(response){
console.log('Success, ' + JSON.stringify(response));
self.transitionToRoute('index');
};
function fail(reason){
console.log('Failed, ' + JSON.stringify(reason));
self.set('errorMessage', JSON.stringify(reason));
};
var authenticate = Ember.$.post('https://example.com/users/sign_in.json', data);
authenticate.then(done, fail);
}
}
});
무엇이 여기에 있습니까? 나는 Ember에게 매우 익숙하므로 뭔가 간단 할 수 있습니다. 또한 관련성이있는 경우 Yeoman Ember 패키지를 사용하여 앱을 빌드 했으므로 1.3.0 버전이 아닌 1.0.0 버전을 사용합니다.
"DEBUG: Ember.VERSION : 1.0.0"
"DEBUG: Handlebars.VERSION : 1.0.0"
"DEBUG: jQuery.VERSION : 2.0.3"
편집 : 나는에 authenticate
약속 라인을 변경하는 경우
그래서 :
authenticate.then(done).then(undefined, fail);
가 발생하면서,
authenticate.then(done);
아무런 변화가 없습니다 fail
이 발사; 나는 그것들이 원본과 유사하다는 것을 알고 있지만, 그것은 undefined
이 약속이 되돌려지고 있음을 암시합니다. 지금 서버 페이로드를 다시 점검 할 것입니다.
편집 2 :
나는 this question이 비슷한 문제를 설명하는 것으로 의심. 다음과 같이 JSON 데이터를 반환 제어기 후크이다
@key = {key: user.key}
logger.debug @key.to_json
render :json => @key
EDIT 3
응답 패널의 파이어 폭스 네트워크 관리자가 SyntaxError: JSON.parse: unexpected end of data
말한다.