Javascript新手:如何避免发送未更改的数据
Newbie to Javascript: how to avoid sending data that have not changed?
我是一个Javascript初学者,我想发布输入复选框的序列化数据。数据被发送到服务器,以便更新SQL表中的相应字段。稍后,用户可以查看他第一次所做的选择,并取消选择一些复选框。如果我理解得很好,只会发送选定的项目,而不会发送未选定的项目。如何发送更新新选择的项目和新未选择的项目所需的所有信息?
我找到的唯一解决方案是进行2次更新:第一次将所有行重置为0,第二次将序列化数组中发送的选定项(新选定或未选定)设置为1。有没有更好的方法来做这项工作?理想情况下,我只会更新已更改的数据。有可能吗?
谨致问候,Patrick
如果我理解正确,您可以过滤复选框,然后也可以将未选中的框添加到参数中。
我在SO找到了它的代码。看看这个问题。
下面的演示和这里的一个jsfiddle只有在用户更改了数据的情况下才进行ajax发布。不确定这是否是你想要的。
(SO的演示有点修改,因为JSONP需要没有CORS错误。)
var data = "";
$('form').submit(function (evt) {
evt.preventDefault();
//console.log($(this).serialize());
var formData = $(this).serialize();
// source from this SO question https://stackoverflow.com/questions/10147149/how-can-i-override-jquerys-serialize-to-include-unchecked-checkboxes
// include unchecked checkboxes. use filter to only include unchecked boxes.
$.each($('form input[type=checkbox]')
.filter(function (idx) {
return $(this).prop('checked') === false
}),
function (idx, el) {
// attach matched element names to the formData with a chosen value.
var emptyVal = "off";
formData += '&' + $(el).attr('name') + '=' + emptyVal;
});
console.log(formData);
if ( data != formData ) { // check if user changed the data.
$.ajax({
url: 'http://jsfiddle.net/echo/jsonp/',
type: 'POST',
//data: formData, // this will work but for jsfiddle echo the code below is required.
dataType: "jsonp",
data: {
json: JSON.stringify({
serialized: formData
}),
delay: 1
},
success: function(res) {
console.log('posted: ', res);
}
});
}
data = formData;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<label for="first">check1</label>
<input name="first" id="first" type="checkbox" />
<label for="second">check2</label>
<input name="second" id="second" type="checkbox" />
<label for="third">check3</label>
<input name="third" id="third" type="checkbox" />
<label for="fourth">check4</label>
<input name="fourth" id="fourth" type="checkbox" />
<input type="submit" value="update" />
</form>
相关文章:
- 用程序搜索JQuery数据表中的文本
- 要求输入在数据列表中
- 正在将数据主题添加到所有项目
- 函数参数中的数据与指定变量之间的任何性能差异
- 在VanillaJS中模拟模型双向数据绑定
- CSS-如何定位内容数据标题
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 序列化数据属性中对象的最可靠方法
- 如何将JSON数据导入我的ejs模板
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 画布数据到图像
- Javascript新手:如何避免发送未更改的数据
- JavaScript 新手 - 需要帮助使用表单中的数据创建多个对象
- 我是javascript的新手,我正在从url获取JSON数据,我只能在成功函数中访问数据,我错过了什么
- Mongo/Node/Meteor 的新手,想知道为什么 Meteor 没有获得任何数据
- 我想创建一个动态表,当用户点击提交/保存(新手程序员)时,它具有用户输入的数据
- 我是Angular js的新手,我想在HTML文件中显示本地JSON数据.下面是我试过的代码
- 检索列数据从mysql和显示在HTML格式的动态列表视图?mysql新手& &;php