Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 第1部分:jQuery->;MySQL->;jQuery->;HTML_Php_Jquery_Mysql - Fatal编程技术网

Php 第1部分:jQuery->;MySQL->;jQuery->;HTML

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,请升级或不使用我的应用程序:)

正常情况下,用户可以从表中获取、设置和删除数据

在我的应用程序中,我在不重新加载页面的情况下获取和设置了大量信息。为此,我主要使用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
}
我的问题是:

  • tehre是JS文件和jquery_getset_data.php之间更好的交互方式吗

  • 如何在createStoreList中动态调用不同的“删除项”函数?见更新1

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

      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);   
    });