使用textarea内容更新MySQL而无需重新加载

时间:2009-08-25 10:17:59

标签: php javascript mysql html

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

我知道这样的程序会涉及一些JavaScript,但遗憾的是我不知道 - 我用PHP完成了所有工作,所以我需要指向那个方向。基本上我的问题(我认为)是如何从已编辑的textarea中获取文本并将其发送到MySQL而不重新加载页面。如果我朝错误的方向前进,我会非常愿意听取其他建议。

10 个答案:

答案 0 :(得分:6)

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

我讨厌在这里成为“使用jquery”的答案,但学习jQuery以使用基于AJAX的调用的麻烦非常低于你从这样的调用中获得的价值。

文档有great examples,其中大多数都很简单。

答案 1 :(得分: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是一个很好的起点。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

您正在寻找的是AJAX。 jQuery使这很容易; try starting here.

答案 4 :(得分:0)

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

onblur="sendUpdate(this.value)"

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

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

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

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

答案 5 :(得分:0)

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

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

检查

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

答案 6 :(得分:0)

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

最好使用JavaScript库,因为AJAX对于初学JavaScript开发人员来说有点复杂。一个不错的选择是JQueryMooTools

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

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

答案 7 :(得分:0)

没有JavaScript,你可以做得很好。只需将每个textarea +按钮放在自己的< form>中,然后将表单提交到一个脚本,该脚本从textarea值更新数据库,并返回:

204 No Content

状态而不是200 OK和新页面。旧页面将保留。

答案 8 :(得分:0)

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

import pandas as pd
import numpy as np

df = pd.DataFrame({'value': [True, False]})
print(df)

#     value
#  0   True
#  1  False

df['third_column'] = np.where(df['value'], 1, 0) 
print(df)

#     value  third_column
#  0   True             1
#  1  False             0

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

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

脚本上传:

$('#yourElement').on('input propertychange', function(){

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

    });

答案 9 :(得分:-1)

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