Bölüm 1: jQuery ->

2 Cevap php

I'm developing an application which relies heavily on jQuery for user interaction.
(and if you're browser doesn't support jQuery, then upgrade or don't use my application :)

Normal olarak, bir veri bir tablo, GET SET ve SİL işlevlere sahiptir.

Benim uygulamada, ben GET'ing ediyorum ve sayfayı yeniden olmadan birçok bilgi SET'ing. Bunu yapmak için, çoğunlukla jQuery.post kullanın.

Benim JS dosyasında tipik bir kod şöyle görünür:

jQuery.post("mypath/jquery_getset_data.php", { instance: 'getItems_A', itemID: itemID_value},
  function(data) {
    populateItemList(data);
  });

jquery_getset_data.php çok if tabloların içerir:

if($_POST['instance'] == 'getItems_A'){
  // PHP code to get and process data from MySQL DB
}

if($_POST['instance'] == 'setItems_A'){
  // PHP code to process and insert data to MySQL DB
}

İşte benim sorum: />

  1. JS dosya ve jquery_getset_data.php arasındaki etkileşim için daha iyi bir yolu tehre mı?

  2. Nasıl dinamik createStoreList içinde farklı "öğeyi kaldırmak" fonksiyonları çağırabilirsiniz? Güncelleştirme 1 Bkz.

Update 1: This is the code that I use to create many different lists.

  function createStoreList(data)
  {
    var ul = jQuery("<ul/>");

    // We need to build the html structure in order for this to be registered in DOM.
    // If we don't, jQuery events like .click, .change etc. will not work.      
    for (var i = 0; i < data.length; i++)  
    {
      ul.append(
         jQuery("<li/>")
         .attr("id", "listItem_"+data[i].id)
         .append(jQuery("<span/>")
            .addClass("btnRemoveItem")
            .attr("title", "Remove store from list")
            .attr("id", data[i].id)
            .click(function() { removeItemA(this); })  
          )
         .append(data[i].name + ', ' + data[i].street)
        );              
    }
    return ul;  
  }

Update 2 I figured I just could use switch statements. I've tested it and it works.

    .click(function() {
        switch(instance)
        {
          case 'removeListItemA': removeListItemA(this); break; 
          case 'removeListItemA': removeListItemB(this); break;
          case 'removeListItemA': removeListItemC(this); break;
        }
    })

2 Cevap

Jquery_getset_data.php azaltmak için ben anahtarları önlemek için cepten tasarım desenleri kullanmak ve tablolar halinde olacaktır.

class ICommand
{
     public:
          function execute( );
};

class CommandGetItemA
{
     public:
           function execute( )
           {
               //do some staff here
           };
};

ve daha sonra:

CommandsMap['getItemA'] = new CommandGetItemA( );
CommandsMap['setItemA'] = new CommandGetItemB( );
....

CommandsMap[ $_POST['instance']].execute( );

I know looks complicated, but for my taste looks much better. And regarding your second question I'm not sure I understood it, can you add more explanation?

Sana güncelleme gördüm sonra, yapabileceğiniz ikinci soruya düşünüyorum:

.click(function() {
      window[instance]( this);   
});

Orada "örnek" işlev adı, ya da güncellemek ya da işlev isim yapmak için bu ikinci ekleyebilirsiniz;

Ben değiştirecek tek şey jquery_getset_data.php yerine ifadeler eğer çok bir switch deyimi kullanmak olduğunu. JQuery'nin $. yazılan yöntemi GET ajax yöntemlerden birini kullanarak veritabanı (silme / güncelleme / etc) etkileyen bir komut konuşurken, ne yaptığını gayet iyi ($. yük veya $. olsun) HTTP belirtimi kırar.