收集ajax提交的表单数据

时间:2013-08-29 04:06:46

标签: php javascript html ajax

我有一个数据库,里面有超过50个项目需要检查和编辑。我有一个网页,使用PHP从数据库中提取数据,并将其显示为webform中的值。然后我在页面底部有一系列提交按钮,具体取决于用户想要做什么。每个按钮都使用onclick方法来调用javascript函数。

如果需要进行一些更改,用户将直接在webform中进行编辑。例如,在textarea中,textarea的值将显示数据库项的当前内容。然后,用户可以编辑内容。单击“保存更改”按钮会调用ajax函数,以使用POST请求将数据发送回服务器。

我遇到的问题,对于知道如何处理的人来说可能很简单,如何从不同的表单组件中收集所有更新的数据,以便在下面的变量“FormData”中发送到服务器(可能是一个数组)。有没有办法一次完成所有这些,或者我是否必须逐步浏览每个表单元素并逐个添加到数组中? “msg”指的是<div id="msg"></div>,其中将显示来自服务器页面的消息。

到目前为止我的ajax功能是:

function callsave() {
    var xmlHttp, FormData;
    xmlHttp = new XMLHttpRequest;
    xmlHttp.onreadystatechange = function () {
        if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
            document.getElementById("msg").innerHTML = xmlHttp.responseText;
        }
    }
    xmlHttp.open("POST", "savechanges.php", true);
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlHttp.send(FormData);
}

表单末尾的提交按钮是:

<input type="button" value="Save Changes" id="save" onClick="callsave();">

非常感谢我指出了正确的方向。顺便说一句,这是我的第一个ajax编码。

3 个答案:

答案 0 :(得分:2)

如果您正在使用jQuery,FormData=$('#formId').serialize(),可以轻松实现 serialize()将返回查询字符串样式中的所有表单数据,如“name = AAA&amp; action = BBB”

答案 1 :(得分:0)

  

“...如何从不同的表单组件中收集所有更新的数据......”

不知道您的完整表单和处理程序(savechanges.php)中的内容,

您可以使用savechanges.php中的此代码段从表单中提取每个POST值:

foreach ($_POST as $key=>$value) {
    $post_values=$key.": " . $value . "\n";
}

答案 2 :(得分:0)

我不确定你的html是什么样的,但你可以为每个表单按钮分配一个唯一的id(这可以通过在db中分配你的行的主键在php中完成)和提交按钮以便你可以从提交按钮的ID获取您需要提交的表单。

例如,如果您的表单html是这样的:

<form id="data-<?php //put the primary key of the row here ?>">
<!-- rest of your form attributes here -->
<input type="Submit" id="submit" class="submit" onClick="callSave(<?php //same primary key as your form?>)" />
</form>

至于ajax,我建议您使用jQuery的$ .ajax函数,因为它比本机js更容易编码。

你会做类似于你的callave函数

function callSave(formId)
{
   $.ajax({
   type : 'POST',
   url : //your post url,
   data : $("#data" + formId).serialize(),
   success : function(data){
      $("#msg").text(data);
   }
    });
}

设置jQuery是一件轻而易举的事。关注this link