如何在Ajax中验证序列化数据
how to validate serialized data in Ajax
我遇到了这个特殊的问题,在通过ajax调用保存数据之前,我需要验证数据。当用户导航到不同的URL时,会调用save_ass_rub
函数。
在我的应用程序中,我有一个自定义窗口,允许用户输入数据。我能够在这个步骤中捕获所有数据:var data = $('form').serialize(true);
。但我需要循环执行此操作,并检查某些特定元素的数据是否为空。当用户在自定义窗口中时,我无法执行此操作。自定义窗口对用户来说是可选的。我只想提醒用户,以防他在提交数据之前将元素留空。我们使用的是Prototype.js和ajax。
<script>
function save_ass_rub() {
var url = 'xxxx';
var data = $('form').serialize(true);
var result;
new Ajax.Request( url, {
method: 'post',
parameters: data,
asynchronous: false, // suspends JS until request done
onSuccess: function (response) {
var responseText = response.responseText || '';
if (responseText.length > 0) {
result = eval('(' + responseText + ')');
}
}
});
if (result && result.success) {
return;
}
else {
var error = 'Your_changes_could_not_be_saved_period';
if (window.opener) { // ie undocked
//Show alert in the main window
window.opener.alert(error);
return;
}
return error;
}
}
// Set up auto save of rubric when window is closed
Event.observe(window, 'unload', function() {
return save_ass_rub();
});
</script>
能做这样的事吗?
After Linevar data = $('form').serialize(true);
var split_data = data.split("&");
for (i = 0; i < split_data.length; i++) {
var elem = split_data[i];
var split_elem = elem.split('=');
if( split_elem[0].search(/key/) && split_elem[0] == '' ){
console.log( split_elem );
var error = 'Not all the elements are inputted';
window.opener.alert(error);
return;
}
}
我不使用序列化的表单字符串,而是使用表单本身进行验证。如果$('form')
是表单元素,那么创建一个单独的函数来检查表单元素是否被划分。
function checkform(form)
{
var emptytexts = form.down('input[type="text"]').filter(function(input){
if(input.value.length == 0)
{
return true;
}
});
if(emptytexts.length > 0)
{
return false;
}
return true;
}
并且在save_ass_rub()
功能中
//..snip
if(checkform($('form') == false)
{
var error = 'Not all the elements are inputted';
window.opener.alert(error);
return;
}
var data = $('form').serialize(true);
var result;
我只在checkform()
函数中添加了文本输入,您可以对其余的输入类型和该函数的任何其他奇怪处理进行处理。只要返回false,就会显示错误,js将停止,否则将继续
- Ajax发布表单序列化,发布引号'
- 序列化数据属性中对象的最可靠方法
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- 为什么JSON.stringify没有序列化原型值
- 有没有一个Nodejs库可以序列化和反序列化命名组件的路径(比如URL路径名)
- 是否可以在javascript中反序列化java对象
- jQuery Ajax数组序列化错误
- 对象序列化,JAVA,Javascript
- 在jquery中以序列化的形式传递额外的paparameter
- 如何使用angularjs序列化对象
- 使用System从C#集合创建JSON数组.网状物剧本序列化
- javascript中是否有更标准化的方法来转换(序列化)非表单数据以与ajax一起使用
- 在html标记中序列化javascript代码
- 如何在C#中反序列化json对象
- jQueryAJAX-将额外的键/值对推送到序列化的$_POST数组中
- 使用JSON序列化图论树的解决方法
- JQUERY 验证 - 序列化选择和复选框
- 如何在Ajax中验证序列化数据
- 序列化测试-有时是验证错误
- 在验证错误时序列化递增id