jQuery - $. kullanarak dinamik içerik yükleyici oluşturma olsun ()

1 Cevap php

(Merhaba dr.Nick) :) Bu yüzden ben kullanmayı düşündüm jQuery için bir içerik yükleyici eklentisi hakkında dün yayınlanan bir soru, ama işe alamadım.

http://stackoverflow.com/questions/2469291/jquery-could-use-a-little-help-with-a-content-loader

Şimdi çalışıyor olsa da, ben ona bazı dezavantajları bakın. Bu kod aslında href link url alır bu yana içerik inç olan dosyaların heaploads gerektirir ve #content
adında bir div için bu dosyayı arar Gerçekten ne olur yapmak gibi tek bir dosya içine bu dosyaların tüm toplamak ve benzersiz kimliği var her div / kabı vermek ve sadece olanlardan içerik almak için. Yani ben etrafında döşeme pek çok ayrı dosyalar gerekmez.

Nick Craver bir iniş arayacaklar beri yerine $.get() kullanmanız gerektiğini düşündüm. Ama ben js o kadar güçlü değilim .. Ve ben bile bu ne demek bilmiyorum. Ben temelde gerçekten bu amaç için uygun değildir, vb txt dosyasında depolamak, Visual Basic ve argümanlar geçen alışkınım.

Yani bu gibi şeyler yapmanın "normal" yolu nedir? Ben bu hakkın düşünülmektedir tek değilim eminim? Ben temelde benzersiz kimlikleri ile divlere sürü içeren tek bir php dosyasından içerik almak istiyorum. Ve çok uğraşmadan, benim ana sayfasında varolan içeriği fade out diğer dosya içeriğini almak ve benim ana sayfanın içine kaybolur.

1 Cevap

Bu biraz kendine yeten bir örnek deneyin

<?php
if ( isset($_POST['contentId']) ) {
  // a contentId parameter has been sent
  // "we" know these ids:
  $contents = array(
    'a'=>'Mary had a little lamb',
    'b'=>'whose fleece was white as snow',
    'c'=>'And everywhere that Mary went',
    'd'=>'the lamb was sure to go'
  );
  // if we know the contentId
  if ( isset($contents[$_POST['contentId']]) ) {
    // send back the data associated with the contentId
    echo $contents[$_POST['contentId']];
  }
  else {
    echo 'unknown contentID';
  }
  die;
}

// if no contentId parameter has been sent at all, send the html document
?>
<html>
  <head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script type="text/javascript">
      function foo(contentID) {
        $('#container').hide('fast', function() {
          $('#container').load('?', {'contentId':contentID}, function() {
            $('#container').show('normal');
          });
        });    
      }
    </script>
  </head>
  <body>
    <fieldset>
      <button onclick="foo('a')">load content A</button>
      <button onclick="foo('b')">load content B</button>
      <button onclick="foo('c')">load content C</button>
      <button onclick="foo('d')">load content D</button>
     </fieldset>
    <div id="container">Hello.</div>
  </body>
</html>

"Önemli" bir parçası isteği (post) parametre ContentId = şey içerecek yani). Yük (için {'contentId':contentID} nesnesi iletir olmasıdır. Komut testler böyle bir parametre ayarlı olup olmadığını isset () kullanarak bir php kısmı. Var ise, bu ContentId ile ilişkili olan veri olup olmadığını test eder. Örnek, bu bir (statik) dizi kullanır ama sadece bir şey olabilir.

Bu, bazı sakıncaları vardır. Örneğin tarayıcı içeriğini önbelleğe almaz. Bir düğme veri vurmak her zaman sunucu ve istemci arasında ileri ve geri gönderilmelidir. Ama sizin php script http://someserver/getContents/contentIdA, http://someserver/getContents/contentIdB, http://someserver/getContents/contentIdC ve benzeri gibi adresler tepki izin mod \ yazımının ya da benzeri bir şey kullanabilirsiniz.