2011-02-01 3 views
0

jquery, ajax 및 php를 사용하여 회사 인트라넷을 갱신하려고합니다. 사이트의 일반적인 측면은 div에로드 된 상단의 드롭 다운 메뉴와 드롭 다운 메뉴에서 클릭 한 페이지를로드하는 콘텐츠 div입니다. 문제는 내부 내용이 탭 메뉴가있는 페이지를로드 할 때 나옵니다. 탭을 클릭하면 폼이있는 HTML 구조 페이지가로드되고 POST 호출로 채워집니다.jquery/ajax 제한 및 캐시 관리에 대한 일반적인 질문

질문은 미리로드하는 대신 요청할 때 데이터를로드하고 웹에있는 많은 예제 에서처럼 호출 할 때 표시되는 것입니까? 내 방식으로 작업하면 많은 데이터가 캐시되므로 일부 데이터를 확인하기 위해 클릭 할 때 하나의 데이터 대신 여러 데이터를 요청합니다. 이 언어로 작업하는 가장 좋은 방법은 무엇입니까?

$("#div_0").show(); 
     $("#scheda_eti > div").css({"background-color": "white", "color": "black","cursor":"hand"}); //tabs div 
     $("#"+schemi[0]).css({"background-color": "red", "color": "white","cursor":"default"}); 
     for (var x=0; x<schemi.length; x++) 
     { 
      $("#div_"+x).load("./schemi/sch_"+schemi[x]+".php", {azione: "vedi"}); 
     } 
     $.post("./php/global.php", 
      {azione:"vedi", contratto: $("#suggest_hidden").val() }, 
      function(xml) 
      { 
       if ($("status", xml).text()=="1") 
       { 
        $(xml).find("form").each(function() 
        { 
         var id_form=$(this).attr("id"); 
         scorriDati(xml, "form_"+id_form); 
        }); 
       } 
       else 
       { 
        $("#scheda_ris").html("<img src='./img/validno.png' alt='errore'> <span style='color:red'><p>Attenzione!<br>codice non trovato!</p></span>"); 
       } 
       $(xml).find("errore").each(function() 
       { 
        $("#scheda_ris").append("<img src='./img/validno.png' alt='errore'> <span style='color:red'>"+$(this).text()+"<br></span>\n"); 
       }); 
      },'xml' 
     ); 

내 이전 게시물에 시청 ca를 몇 가지 코드를 보려면 :

은 내가 사전로드 모든 형태에 대한 한 번에 모든 데이터, 여기에 코드 내 목표 솔루션은 나단에 의해 제안 발견 여기 링크 : question1 question2

덕분에 사전에

챠오 시간

+0

질문/문제를 잘 이해하지 못합니다. AJAX의 요점은 요청시로드하는 것입니다. AJAX 사전로드는 AJAX의 목적을 무력화시키는 것 같습니다. –

+0

나는 또한 예를 들어, 웹상에서 탭 메뉴를 생성하기위한 모든 코드가 숨겨진 div에있는 모든 탭의 데이터를로드한다고 생각합니다. 클릭 할 때 클릭했을 때 동적으로로드됩니다. 지금은 분명하지 않을 수 있습니다 영어는 제 1 언어가 아닙니다 .. – haltman

답변

1

"데이터를 미리로드하지 말고 요청했을 때 데이터를 올바르게로드하고 불러올 때 표시할까요?"라는 대답을 추측 할 수 있습니다. 다른 탭으로 전환 할 때 사용자가 선호하는 것은 무엇입니까? "

  1. 지연없는 (초기 페이지로드시에로드 된 모든 내용)
  2. 짧은 지연 (새 탭의 내용의 아약스 조회)
  3. 전체 페이지로드 (전체 왕복, 필요 없음 아약스)

대부분의 경우 첫 번째 또는 세 번째 방법으로 좋은 결과를 얻을 수 있습니다. Ajax를 과도하게 사용하지 마십시오.

여기에 a blog rant about overuse/correct use of Ajax ... 솔직히 읽지 않고 모든 것을 보증하지는 않지만 도움이 될 수 있습니다.

+0

나는 당신의 첫 번째 제안을 사용했습니다!이제 내 코드를 사용하여 내 게시물을 수정하십시오. – haltman

+0

위대한, 당신이 그것을 작동하는지 궁금 해서요! – Nathan

+0

@haltman과 @Nathan : 개인적으로 1과 2의 하이브리드를 제안합니다. 태양 아래에서 모든 것을 미리로드하는 것은 결코 사용되지 않을 여러 가지 물건의 생성 시간을 늘리기 때문에 좋지 않습니다. 대신 일반적으로 사용되는 데이터를 미리로드하고 필요할 때 덜 필요한 컨텐트를 사이드로드 (아약스 조회)하십시오. 그렇게하면 로딩 시간과 응답 성을 잘 혼합 할 수 있습니다. – ircmaxell

2

나는 jQuery UI Tabs을 찾고 있습니다. 코드에 jQuery UI을 포함해야합니다. jQuery 이후에 확실히 입니다.

주문 : 당신은 UI 밝기 테마를 좋아하지 않는 경우에

<link rel='stylesheet' href='http://jquery-ui.googlecode.com/svn/tags/latest/themes/ui-lightness/jquery-ui.css' /> 
<script src='http://code.jquery.com/jquery-latest.min.js'></script> 
<script src='http://jquery-ui.googlecode.com/svn/tags/latest/ui/minified/jquery-ui.min.js'></script> 

, 당신은 Theme Gallery에서 하나를 선택할 수 있습니다. 예를 들어 UI 어둠을 테마로 사용하려면 ui-lightness을 테마 이름으로 소문자로 바꾸고 하이픈 대신 공백으로 바꾸십시오.

관련 문제