第1部分:jQuery – > MySQL – > jQuery – > HTML

我正在开发一个严重依赖jQuery进行用户交互的应用程序。
(如果你的浏览器不支持jQuery,那么升级或不使用我的应用程序:)

正常情况下,一个人具有从表中获取,设置和删除数据的function。

在我的应用程序中,我在没有页面重新加载的情况下获取并设置了大量信息。 为此,我主要使用jQuery.post。

我的JS文件中的典型代码如下所示:

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

jquery_getset_data.php包含许多if语句:

 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 } 

这是我的问题:

  1. 这是JS文件和jquery_getset_data.php之间交互的更好方法吗?

  2. 如何在createStoreList中动态调用不同的“删除项”function? 见更新1。

更新1:这是我用来创建许多不同列表的代码。

  function createStoreList(data) { var ul = jQuery("
    "); // 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("
  • ") .attr("id", "listItem_"+data[i].id) .append(jQuery("") .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; }

更新2我想我可以使用switch语句。 我测试了它,它的工作原理。

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

为了减少jquery_getset_data.php,我将使用OOP设计模式来避免switch和if语句。

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

然后:

 CommandsMap['getItemA'] = new CommandGetItemA( ); CommandsMap['setItemA'] = new CommandGetItemB( ); .... CommandsMap[ $_POST['instance']].execute( ); 

我知道看起来很复杂,但我的口味看起来好多了。 关于你的第二个问题,我不确定我是否理解它,你可以添加更多解释吗?

在我看到你更新后,我认为你可以做第二个问题:

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

那里的“instance”是函数名,或者你可以更新或附加它以使它成为函数名;

我唯一要改变的是在jquery_getset_data.php我会使用switch语句而不是许多if语句。 jQuery的$ .post方法适用于您正在做的事情,使用GET ajax方法($ .load或$ .get)之一与影响数据库的脚本(删除/更新/等)进行交谈会破坏HTTP规范。