2013-10-15 3 views
1

여러 비동기 아약스 호출로 인해 cfwheels에서 동작을 찾을 수없는 오류가 발생하는 것으로 보입니다. 나는 비동기를 추가 할 때 알아 차렸다. 아약스 호출에 false를 반환하면 성공적인 응답을 얻을 수 있지만 추가하지 않으면 무작위로 오류 응답을 얻는다.CFWHEELS 비동기 AJAX 호출이 휠을 반환 함을 알 수 없음

이 코드는 다른 아약스 호출을 처리 할 때 제대로 작동하지만 비동기 설정으로 인해로드하는 데 시간이 오래 걸립니다.

var checkLogin = function(){ 
     var loggedin = false; 

     loginValidated = true; 

     //Check login status 
     $.ajax({ 
      type: "POST", 
      url: '/loginAjax/validateLogin?format=json', 
      global: false, 
      async: false, 
      success: function(data) { 
       if (data.loggedIn) { 
       loggedin = true; 
       } 
      } 
     }); 

return loggedin; 
}; 

이 무작위로 실패, 나는 비동기 설정을 제거주의 사항 : 여기

var checkLogin = function(){ 
     var loggedin = false; 

    loginValidated = true; 

$.ajax({ 
    type: "POST", 
    url: '/loginAjax/validateLogin?format=json', 
    global: false, 
    success: function(data) { 
    if (data.loggedIn) { 
     loggedin = true; 
    } 
    } 
}); 

return loggedin; 
}; 

내가 부르고 작업입니다 :

<cffunction name="validateLogin"> 
    <cfset var returnObj = {}> 
    <!--- Set Return Data ---> 
    <cfset returnObj["loggedIn"] = false> 

    <cfif StructKeyExists(SESSION.User, 'loggedIn')> 
     <cfset returnObj["loggedIn"] = true> 
    </cfif> 

     <cfset renderWith(returnObj)> 
    </cffunction> 

어떤 도움에 감사드립니다. :)

답변

1

프로덕션 또는 디자인 모드입니까? 일반적인 아약스 문제는 디자인 모드에서 프레임 워크가 완전히로드되기 전에 발생하는 ajax 요청과 관련이 있습니다. 즉, 모든 경로 등이로드되기 전에 컨트롤러가 간혹 호출 될 수 있습니다.

+0

이것은 개발 모드 및 디자인 모드입니다. 시스템이 일련의 API를 사용하기 때문에 프로덕션 모드를 아직 켜지 않은 상태입니다. 프로덕션 모드에서는 한 번만 프로덕션 모드에서 라이브 API에 연결되지만 개발 모드에서는 그렇지 않습니다. 테스트 모드를 시험해보고 동일한 문제가 계속 발생하는지 확인해야합니다. – osekmedia

+0

넵, 개발 및 디자인 모드는 프레임 워크를 캐시하지 않으며 매번 CFC를 다시로드하므로 확실히 시도 할 것입니다. – Neokoenig

+0

그랬다고 생각합니다! 감사!! – osekmedia