2014-01-17 7 views
3

내가 정의한 다음 백본 ​​모델 :백본 반환 오류를 model.save : OK

var User = Backbone.Model.extend({ 
     url: "/login", 
     contentType: "application/com.example.auth+json", 

     defaults: { 
      userName: '', 
      password: '' 
     }, 

     validate: function(attrs){ 
      if(!attrs.userName){ 
       return 'Please fill username field.' 
      } 
      if(!attrs.password){ 
       return 'Please fill password field.' 
      } 
     } 
    }); 

을 내 Backbone.View에 다음 코드를 사용하고

// ... 
    initialize: function() {  
     this.model = new User(); 
     myUser = { 
      userName: '[email protected]', 
      password: 'abcd_1234', 
     }; 
    } 

    onSubmit: function() { 

     this.model.save(myUser, { 
      success: function() { 
       alert('You are authenticated'); 
       Backbone.trigger('Authenticated', {source: 'LOGIN'}); 
      }, 
      error: function (model, error) { 
       alert('Error: " + error); 
      } 
     }); 
    } 

내가 백엔드에서 다음 응답을 받으면 아무 응답 데이터도 전송되지 않습니다.

Request URL : https://server/login 

Request Method:POST 

Status Code:200 OK 

B 유감 : '오류 : [object Object]'가 인쇄됩니다. 성공 핸들러에 도달하지 않는 이유는 무엇입니까? 서버가 사용자를 성공적으로 인증하도록 유도합니다. 필요한 경우 프론트 엔드/백엔드에서이 문제를 해결하는 방법을 알려주십시오.

답변

11

당신은

... 
this.model.save(myUser, { 
    dataType: 'text', 
    success: function() { 
... 

을 수정하거나 application/json 값으로 올바른 Content-type 헤더를 설정하여 서버 측을 해결하기 위해이 코드 dataType: 'text'를 사용 할 수 있습니다.

+0

감사합니다. 코드 dataType : 'text'를 추가했는데 문제가 해결되었습니다. – Tarun

1

업데이트 initialize에 :

initialize: function() {  
     var myUser = { 
      userName: '[email protected]', 
      password: 'abcd_1234', 
     }; 
     this.model = new User(myUser); 
    } 

당신은 onSubmit 기능에 다음 뀌지 당신의 model를 초기화 할 필요가 직접 저장할 수 있습니다 :

onSubmit: function() { 

     this.model.save(null, { 
      success: function() { 
       alert('You are authenticated'); 
       Backbone.trigger('Authenticated', {source: 'LOGIN'}); 
      }, 
      error: function (model, error) { 
       alert('Error: " + error); 
      } 
     }); 
    } 

참고 : model.save 새를 만드는 데 사용되어야한다 모델을 만들고 백엔드에서이를 유지하고 인증하지 마십시오. 이것을 위해 다른 아약스 요청을하고 싶을 수도 있습니다.

+0

안녕하세요 Niranjan, 빠른 답장을 보내 주셔서 감사합니다. 오타를 유감스럽게 생각하며 수정했습니다. 제 코드를 다시 보시기 바랍니다. – Tarun

+0

@tarun_telang 답변을 업데이트했습니다. –

+0

회신에 설명 된대로하고 있는데도 여전히 같은 오류가 발생합니다. 이것이 백엔드 서비스에 문제가 될 수 있습니까? 만약 그렇다면 우리가 정확히 이것을 바꿔야 할 필요가있는 아이디어. – Tarun

0

PUT (모델 업데이트)의 경우 응답에 콘텐츠가 포함되어 있지 않은 경우 200 (ok) 대신 204 (no-content) 상태로 반환해야합니다.

관련 문제