0

今天我的一位客户要求他需要在表单数据更改时将其异步保存到服务器

前任 :

我有一个用于填写用户详细信息的表格,包括文本框、选择、收音机、检查等...

因此,当我更改文本框中的值时,我需要将它们保存回服务器。

我可以使用 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

值来自dataBinder[name]

<input type="text" class="dataBinder[name]" id="cname" name="name" />

var_dump($changes);

array(3) {
  ["changes"]=>
  array(2) {
    ["cname"]=>
    string(15) "my-changed-name"
    ["agree"]=>
    bool(false)
  }
  ["time"]=>
  string(6) "720124"
  ["form"]=>
  string(6) "formId"
}

我确信可能有很多关于开发人员的问题,但我只是在搜索是否有任何问题,因为我不想重新发明轮子。

4

1 回答 1

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()
        }
    });
});

要考虑的是这将产生的负载。最好是在失去焦点时使用事件处理程序。或者,如果您更喜欢 on-change,那么可能在开始 ajax 更改之前几毫秒。

data-save-ajax 链接当然是一个 php 页面,用于检查会话并根据 url 将数据保存到数据库中。您可以使用 .htaccess (或其他)重写来让您的 php 知道您正在使用什么输入。

例如 data-save-ajax 的 url/ajax/text/name将被重写为/ajax/index.php.

我曾经写过一个这样的 ajax 更新程序,它很容易构建,您可以在需要时轻松更新或重用它。

于 2012-07-26T14:21:46.667 回答