今天,我的一位客户要求他需要异步地将表单数据保存到服务器当它更改时
前:
我有一个填写用户详细信息的表单,包括文本框,选择,广播,支票等......
所以当我在文本框中更改一个值时,我需要将它们保存回服务器。
我可以在php上使用任何可用的库吗?
请注意我知道什么是ajax,但我仍然需要手动编写这么多代码,同样我关心可重用性。这就是我要求图书馆的原因。
修改
我知道jQuery,Js,Ajax等。但我的想法不同......
说
<input type="text" class="dataBinder[name]" id="cname" name="name" />
<input type="checkbox" class="dataBinder[agree_me]" id="agree_me" name="agree_me" />
确定我能做到
$("#cname").event(function(){
var is_changed = true; ///check for changes if any
if(is_changed)
{
//send to the server
}
});
但是我正在寻找可以自动执行的图书馆
例如:
//assume a library dataMapper
var myForm = $("#myForm"); //get the form
myForm.dataMapper({
"server" :"serverUrl/someFunc.php"
//may be some other kind of option too
});
服务器上的someFunc.php
dataMapper DM = new dataMapper();
$changes = DM->get_data(); //a function that which give the changes
return $changes
值来自<{1}}
dataBinder[name]
<input type="text" class="dataBinder[name]" id="cname" name="name" />
给出了
var_dump($changes);
我相信可能会有很多关于开发者的问题,但我只是在搜索,因为我不想重新发明轮子。
答案 0 :(得分:2)
为什么不在所需的每个输入元素中使用data-save-ajax属性,并将ajax页面添加为值。现在你创建一个jQuery(或者你喜欢的任何ajax javascript)并编写一个on-change事件处理程序,将值保存到data-save-ajax链接。
这样的事情:
jQuery("[data-save-ajax]").change( function() {
jQuery.ajax({
url: jQuery(this).attr("data-save-ajax"),
method: 'post',
data: {
newvalue: jQuery(this).val()
}
});
});
要考虑的事情是这将产生的负荷。最好是在失去焦点时使用事件处理程序。或者如果您更喜欢改变,那么在开始改变之前可能需要几毫秒。
data-save-ajax链接将是一个php页面,它检查会话并根据url将数据保存到数据库。您可以使用.htaccess(或其他)重写来让您的php知道您正在使用的输入。
例如,/ajax/text/name
的data-save-ajax网址将被重写为/ajax/index.php
。
我曾经写过像这样的ajax更新程序,它很容易构建,你可以随时随地更新或重复使用它。