2009-12-24 3 views
1

내 웹 사이트 페이지에 jquery ajax 요청이 있으며 모든 페이지에서이 요청을 서버에 게시해야 상태를 알 수 있습니다. 하지만 문제가 : 브라우저에서 페이지를 열면이 요청이 데이터를 반환하기 전에 내 페이지가 제대로 작동하지 않을 수 있습니다. 클릭 할 수는 없습니다. 그러나 정상적으로 렌더링됩니다. 그래서 아무도 그것에 대한 해결책을 가지고 있습니까? 예 : 페이지가로드 된 후에이 스크립트를로드하도록 설정합니다. "=Ajax 요청이 끝나지 않으면 HTML 링크를 클릭 할 수 없습니다.

self.headers ["캐시 제어 "] ="노 캐시해야-재 검증 "
self.headers ["만료 "] :
$(function(){  
     var login_status; 
     $.ajax({ 
     async:false, 
     url:<%= url(:login_status_header_session, :from => from_uri).to_json %>, 
     dataType:"html", 
     success:function(data, textStatus){ 
      login_status = data; 
     } 
     }); 
     if(login_status) { 
     $(".loginDetails p .login_status").html(login_status); 
     } else { 
     $(".loginWrapper").remove(); 
     } 
    }); 

은 login_status_header 액틴입니다 0 "부분"session_header ",
: 형식 =>"HTML "

답변

1

음 ...이 곧 페이지로 발생할 것으로 예상되는 경우, 왜 안로드, 너무 많은 세부 사항에 코드를 검사하지 않고 그냥 서버 측에두고 적절한 위치에 HTML을 생성합니까? PHP 또는 AJAX를 사용하고 잊어 버린 것을 사용하십시오.

+0

죄송합니다. 일부 페이지에서는 상태를 업데이트해야합니다. – wkang

2

나는 추측 할 수있는 정보가 더 이상없고, 내 생각에 async: false을 사용하고 있기 때문에 인터페이스가 응답하지 않습니다. 요청을 동기식으로 수행 할 이유가 있습니까? 하지 않으면 async:false을 제거하고 작동하는지 확인하십시오.

+0

아니요,이 옵션을 사용해야합니다. 그렇지 않으면 페이지가 상태 코드를로드하지 않습니다. – wkang

+0

+1 - Darko가 말한 것처럼 'async : false'때문에 페이지가 멈추는 이유가 있습니다. – Jason

+0

자세한 내용을 알려 줄 수 있습니까? async를 제거한 후 원인 : false, 내 페이지가 상태 html 코드를로드하지 않습니다. – wkang

3

먼저 async:false, 행을 제거하십시오. 이렇게하면 AJAX 요청이 처리되는 동안 인터페이스가 계속 응답합니다. 둘째, 결과 확인을 success 함수로 옮기십시오. 그렇지 않으면 요청이 완료되기 전에 실행되므로 login_status이 아직 설정되지 않았으므로 (기본값은 null로 처리되고 false로 처리됩니다).

$(function(){  
     var login_status; 
     $.ajax({ 
     url:<%= url(:login_status_header_session, :from => from_uri).to_json %>, 
     dataType:"html", 
     success:function(data, textStatus){ 
      login_status = data; 
      if(login_status) { 
      $(".loginDetails p .login_status").html(login_status); 
      } else { 
      $(".loginWrapper").remove(); 
      } 
     } 
     }); 
    }); 
+0

내 편에서는 효과가없는 것 같지만 여전히 감사합니다. 얼어 버린 페이지가 어떤 조건에서 나올지 말해 줄 수 있습니까? – wkang

+0

+1 정확함. 심지어 비동기가 작동하지 않더라도 false는 사용되어서는 안됩니다. –

+0

self.headers [ "Cache-Control"] = "no-cache, must-revalidate" self.headers [ "Expires"] = "0" partial " session_header ", : format =>"html " end 이것은 login_status_header_session 작업입니다. 관련이 있습니까? – wkang

관련 문제