Php 第1部分:jQuery->;MySQL->;jQuery->;HTML
我正在开发一个严重依赖jQuery进行用户交互的应用程序。Php 第1部分:jQuery->;MySQL->;jQuery->;HTML,php,jquery,mysql,Php,Jquery,Mysql,我正在开发一个严重依赖jQuery进行用户交互的应用程序。 (如果您的浏览器不支持jQuery,请升级或不使用我的应用程序:) 正常情况下,用户可以从表中获取、设置和删除数据 在我的应用程序中,我在不重新加载页面的情况下获取和设置了大量信息。为此,我主要使用jQuery.post 我的JS文件中的典型代码如下所示: jQuery.post("mypath/jquery_getset_data.php", { instance: 'getItems_A', itemID: itemID_value
(如果您的浏览器不支持jQuery,请升级或不使用我的应用程序:) 正常情况下,用户可以从表中获取、设置和删除数据 在我的应用程序中,我在不重新加载页面的情况下获取和设置了大量信息。为此,我主要使用jQuery.post 我的JS文件中的典型代码如下所示:
jQuery.post("mypath/jquery_getset_data.php", { instance: 'getItems_A', itemID: itemID_value},
function(data) {
populateItemList(data);
});
jquery\u getset\u 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
}
我的问题是: 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;
}
我唯一要改变的是在jquery\u getset\u data.php中,我将使用一个switch语句而不是许多if语句。jQuery的$.post方法对于您正在做的事情来说是很好的,使用一个GET ajax方法($.load或$.GET)与影响数据库(删除/更新/等等)的脚本交谈打破了HTTP规范。为了减少jQuery_getset_data.php,我将使用OOP设计模式来避免开关和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);
});
这里的“实例”是函数名,也可以更新或追加,使其成为函数名 也许您应该发布“几乎相同的代码”的示例?顺便说一句,你违反了极客代码,没有在你的笑脸附近嵌套参数:它应该是“或不使用我的应用程序:)”:D:D+1表示“如果你的浏览器不支持jQuery,那么升级或不使用我的应用程序”。:-)是的,我正在考虑这样做。将我的代码片段转换为函数,并从swtich语句中调用它们。“使用GET ajax方法($.load或$.GET)之一违反了HTTP规范。”这是什么意思?@Ashley Ward-GET请求不应该对应用程序产生永久性更改(数据库更新、插入、删除)。这就是POST的目的。每个“if”语句执行不同的代码来实现一个目标。这种OOP模式如何减少代码量?我不确定CommandsMap[]是什么。Q2已经更新。我并不是说它会减少代码量,但可以肯定的是,它会使代码更可读、更清晰。每次需要添加新的if语句时,您都需要使用要添加的逻辑编写类,并在CommandsMap中“注册”该类。
.click(function() {
window[instance]( this);
});