【问题标题】:Updating MySQL with textarea content without reloading使用 textarea 内容更新 MySQL 而无需重新加载
【发布时间】:2009-08-25 10:17:59
【问题描述】:

我正在构建一个页面来加载我们的 MySQL 数据库的内容以进行编辑。表格的每一行都位于页面上一个单独的、可编辑的文本区域中。我需要用户能够更新每一行(即将其内容发送到数据库)而无需重新加载整个页面,只需单击负责该特定文本区域的按钮。

我知道这样的过程会涉及一些 JavaScript,但遗憾的是我什么都不知道——我用 php 做了所有我能做的,所以我需要一个指向那个方向。基本上我的问题(我认为)是如何从已编辑的文本区域中获取文本并将其发送到 MySQL 而无需重新加载页面。如果我走错了方向,我非常愿意听取其他建议。

【问题讨论】:

    标签: php javascript mysql html


    【解决方案1】:

    是的,这将需要 javascript。即对您拥有的 PHP 页面的异步调用。这通常称为 AJAX。

    我讨厌在这里成为“使用 jquery”的答案,但是学习 jQuery 使用基于 AJAX 的调用的难度与您从此类调用中获得的价值相比非常低。

    文档有great examples,大部分都很简单。

    【讨论】:

    • 我一读到就在想,请让别人说使用 jquery,因为我已经在两天内完成了两次!
    【解决方案2】:

    这正是 AJAX 所做的:异步 JavaScript 和 XML。它使您无需重新加载页面即可向服务器发送请求。

    我建议从 jQuery 开始,您会发现它在 StackOverflow 社区以及其他地方得到了很多支持,这使得跨浏览器 AJAX 请求变得非常容易。

    使用页面上的 jQuery 脚本,您可以执行以下操作:

    $("#id-of-the-button-the-user-will-click").click(function() {
        $.post('/path/to/your/script.php', { field1: value1, field2: value2 }, function(data) {
            // This function is called when the request is completed, so it's a good place
            // to update your page accordingly.
        });
    });
    

    了解细节仍然需要对 JavaScript 有透彻的了解,因此最好的办法是深入研究并开始编写(从而学习)大量 JavaScript。 AJAX 是一个很好的起点。

    【讨论】:

      【解决方案3】:

      有一个很好的introduction to JavaScript at Opera。 Jibbering 涵盖了the XHR object 的使用,这是在不离开页面的情况下向服务器发送数据的常用方式。 YUIjQuery 等库可以为您完成一些繁重的工作。

      【讨论】:

        【解决方案4】:

        您正在寻找的是 AJAX。 jQuery 让这一切变得更容易; try starting here.

        【讨论】:

          【解决方案5】:

          您可以将 JavaScript 事件添加到 textarea:

          onblur="sendUpdate(this.value)"
          

          当用户完成文本编辑并离开输入时,将发生此事件。

          例如,“this”引用当前的 textarea 组件。

          然后使用 Ajax,如前所述。一个例子是:

          function sendUpdate (text) {
            $.post('script.php', {textarea_value:text},function(){});
          }
          

          【讨论】:

            【解决方案6】:

            您需要从脚本 (javascript) 对服务器进行异步调用。使用 ajax 来实现这一点。您需要了解使用 XMLhttp 对象从客户端脚本 (javascript) 与服务器/数据库进行通信。您无需使用按钮单击提交整个页面,而是可以在按钮单击事件或 onBlur 事件或 onTextChange 事件等中调用 javscript 代码...

            jQuery 是一个 javascript 框架库,可帮助您减少实现此功能的代码行数。但是你不需要使用jquery。你可以在不使用jquery的情况下进行ajax调用。使用jquery会减少行数。

            检查一下

            http://docs.jquery.com/Ajax/jQuery.ajax

            【讨论】:

              【解决方案7】:

              您肯定需要 JavaScript,以及一些无需重新加载页面即可向您的 PHP 服务器发送 HTTP 请求的方法。通常,这称为 AJAX。

              最好使用 JavaScript 库,因为 AJAX 对于 JavaScript 开发新手来说有点复杂。一个不错的选择是JQuery,或MooTools

              AJAX 库通常使用XMLHttpRequestJSONP 来实现HTTP 请求。了解这些应该会更容易一些。

              选择 textarea 元素并对其进行更新将需要使用 DOM (http://www.w3.org/DOM/)。大多数 JavaScript 框架现在使用 CSSXSLT 选择器的实现来查询 DOM。

              【讨论】:

                【解决方案8】:

                你可以在没有 JavaScript 的情况下很好地做到这一点。只需将每个 textarea+button 放在其自己的

                中,然后将表单提交给脚本,该脚本根据 textarea 值更新数据库,并返回:
                204 No Content
                

                status 而不是 200 OK 和一个新页面。旧页面将保留。

                【讨论】:

                • 总的来说,即使您使用 AJAX,这也是一种有趣的非 JavaScript 后备策略。
                【解决方案9】:

                您可以先添加一个 jquery 函数来获取所做的任何更改,即:

                $('#inputelement').on('input propertychange', function(){
                            alert("Alert to test jquery working");
                        });
                

                然后您应该使用 AJAX 创建一个包含数据的 php 脚本(因为 php 是您更新到服务器的方式)并使用 GET 或 POST 变量发送。然后使用该脚本文件将更改上传到您的服务器。例如

                $('#yourElement').on('input propertychange', function(){
                
                       $.ajax({
                          method: "POST",
                          url: "updatedatabase.php",
                          data: {content: $("#yourElement").val()}
                        })
                          .done(function( msg ) {
                            alert( "Data Saved: " + msg );
                      });
                
                    });
                

                脚本上传:

                session_start();
                
                    if(array_key_exists("content", $_POST)){
                
                    include("connection.php");//link to your server
                
                    $query = "UPDATE `users` SET `updateColumn`= '".mysqli_real_escape_string($link, $_POST['content'])."' WHERE id= ".mysqli_real_escape_string($link, $_SESSION['id'])." LIMIT 1";
                
                    if(mysqli_query($link, $query)){
                        echo "success";
                
                    }else {
                        echo "failed";
                    }
                
                }
                

                【讨论】:

                  【解决方案10】:

                  尝试阅读有关 Ajax 的更多信息。它有很多库。

                  【讨论】:

                    猜你喜欢
                    • 2016-02-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2019-07-10
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多