第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 }
这是我的问题:
-
这是JS文件和jquery_getset_data.php之间交互的更好方法吗?
-
如何在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规范。