2011-08-08 6 views
0

私はjqueriesアドレス変更イベントを処理しており、ユーザーがブラウザでURLをコピーして貼り付けると、ロードブロッキングが発生します。フォームを含むページの一部をロードする必要があります。私はページ区切りの呼び出しのたびにこれを行うことができましたが、実際には役に立たないようです。ここでjquery loadを使用してロードされたdivタグの内容をチェックする方法は?

は私の現在のコードブロックです:

$.address.change(function(e) { 

    var urlAux = e.value.split('='); 
    var page = urlAux[0]; 
    var start = urlAux[1]; 

    if (page == "/visits") { 

     $.address.title("Profile Views"); 

     if (start) { 

      $('#start').val(start); 

      // ***** If a user has copied and pasted this URL with a start value then I first need to load visits.php in the main div tag. Is it possible to see if this is loaded or not? 

      $.post("visits_results.php", $("#profile_form_id").serialize(), 
       function(data) { 
        $('#search_results').html(data); 
        location.href = "#visits=" + start; 
       }); 

     } 
     else { 
      var args = localStorage.getItem("visits"); 

      $('#main').load("visits.php?" + args, function() { }); 
     } 
    } 

私試みた仕事は周りのこのでした:より良い方法があるに違いありません

var args = localStorage.getItem("visits"); 

$('#main').load("visits.php?" + args, function() { 

    $('#start').val(start); 

    $.post("visits_results.php", $("#profile_form_id").serialize(), 
     function(data) { 
      $('#search_results').html(data); 
      location.href = "#visits=" + start; 
     }); 
    }); 

...これはページの同じ部分をrealoadingれます(visits.php)をページングイベントごとに追加します。 URLを読み込み、アドレスの変更を引き起こさないようにするより良い方法はありますか?

+0

私はあなたの全体的な目標が何であるかわかりません。あなたが常に必要とする「visits.php」のhtml /フォームデータをフォーマットしたように聞こえますが、空白のときにページを含めて推測しています。それはそれを合計しますか? – DefyGravity

+0

visits.phpは、投稿時に結果がページの別のdivタグに返される単なるフォームです。改ページコントロールはvisits.phpページの一部です。問題は、すべてのページを変更した後にページのvisits.php部分を読み込む必要がある場合、ページングコントロールが毎回読み込まれると「点滅」してしまうことです。フォームを一度ロードすることはできますが、ユーザーがブラウザに直接URLを入力すると失敗します。私はこれを検出し、visits.phpフォームを一度だけロードするか、すでにロードされているかどうかを判断する方法が必要です。何かご意見は? – Paul

+0

もう少しハッキングした後、私はこのやり方をするようなこの解決策を思いついた。私はそれがどれほど良いのか分かりませんが、そのトリックをするようです。私は今、メインdiv IDを取得し、フォーム内の一意の文字列に正規表現マッチを行います。表示されない場合は、フォームをロードして結果をロードします。これが良い練習であるかどうかわからないけど、私の問題を解決するようです。 – Paul

答えて

1

visits.phpフォームのRegex'ing htmlコンテンツの代わりに、彼のコメントからポールの回避策を使用すると、このソリューションは#mainIDに添付されたdata()を探します。ノートの周り

ポールの作品:もう少し私は トリックを行うようだ。この解決策を考え出したハッキン​​グの後

。私はそれがどれほど良いのか分かりませんが、そのトリックをするようです。 I は今すぐdiv idを取得し、 フォームの一意の文字列に正規表現マッチを行います。表示されない場合は、フォームをロードして結果をロードします。 これが良い習慣であるかどうか確かめないでくださいが、それは私の問題を解決するようです。

代わりvisits.phpのHTMLの正規表現検索の.DATAを使用するための方法論():

/*check if we're missing visits.php by looking for data() flag*/ 
      if(!($("#main").data()["hasVisitsPhp"])){ 
       var args = localStorage.getItem("visits"); 
       $('#main').load("visits.php?" + args, function() { 
       $('#start').val(start); 
       $.post("visits_results.php", $("#profile_form_id").serialize(), 
        function(data) { 
/* we've loaded visits.php, set the data flag on #main*/ 
       $('#main').data("hasVisitsPhp","loaded"); 
         $('#search_results').html(data); 
         location.href = "#visits=" + start; 
        }); 
       }); 
      } 
0

try window.location.hash href全体を変更するとページ全体の再読み込みを開始できますが、ハッシュのみを変更するとページがスクロールする必要があります。

+0

私はそれを試しましたが、残念ながら#main divタグはロードされるたびにURLが毎回変わるので(start = x、xはページ番号)これは、ユーザーがページ番号を含むURLをブラウザにコピーする場合にのみ発生します。私はそれらを直接ページに持って行きたいと思います。ユーザーがURLを直接呼び出すと、アドレス変更イベントが発生しないようにすることはできますか? – Paul

+0

"直接"?アドレスバーに入力または切り取り/貼り付けでURLを入力するときのように? –

+0

ユーザーが直接URLをブラウザにコピーするときに、http://localhost/menu.php?home#visits = 20 – Paul

関連する問題