我有一个数据库,里面有超过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编码。
答案 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