Parsley 远程和服务器端验证(无法从 json 对象获取内容)
Posted
技术标签:
【中文标题】Parsley 远程和服务器端验证(无法从 json 对象获取内容)【英文标题】:Parsley Remote and Server Side Validation (can't get content from json object) 【发布时间】:2015-12-27 09:16:27 【问题描述】:我正在尝试验证我们的数据库中是否已经存在电子邮件。我总是从 Ajax 请求中获得 200 状态代码,但我得到的请求正文看起来像这样。如果该电子邮件不存在且可用,则结果 =1(表单应返回 true),如果该电子邮件已存在于数据库中,则结果 = 0(发件人应返回 false 且未验证)。但是我一直在控制台中获取未定义的数据。好像我不知道如何将json对象传递给函数。
我会买啤酒给任何能帮我解决这个问题的人。谢谢。
JSON 响应
id: "1c29da8e-ca94-4ea4-a69f-f0af15f54bf5", redirectPage: "/public/actionStatus.jsp", errorText: "",…
action: "/check.douserEmailAvailable"
data:
errorCode: ""
errorText: ""
id: "1c29da8e-ca94-4ea4-a69f-f0af15f54bf5"
redirectPage: "/public/actionStatus.jsp"
result: "1"
text1: ""
text2: ""
text3: ""
text4: ""
text5: ""
JQUERY 和 HTML
$(document).ready(function()
window.Parsley.addAsyncValidator('mycustom', function (data)
if (data.result == 1)
console.log("does not exist");
return true;
else
console.log("already exist");
return false;
, '/check.do?action=userEmailAvailable&ajax=1');
$('#userReg').parsley();
);
<input type="email" name="userEmail1" data-parsley-remote data-parsley-remote-options=' "type": "POST", "data": "token": "value" ' data-parsley-remote-validator='mycustom' id="userEmail1" value="" required />
【问题讨论】:
【参考方案1】:传递给异步验证器的第一个参数是xhr
,而不是data
。
您可以使用$.parseJSON(xhr.responseText)
或xhr.done(function(json)...)
等...来做您想做的事情。
【讨论】:
【参考方案2】:搞定了,如果以后有人遇到问题。
$(document).ready(function()
window.Parsley.addAsyncValidator('emailvalidation', function (data)
var myResponseText = data.responseText;
var obj = jQuery.parseJSON(myResponseText);
if (obj.result == 1)
return true;
else
return false;
, '/check.do?action=userEmailAvailable&ajax=1');
$('#userReg').parsley().on('form:success', function()
var formData = $("#userReg").serializeArray();
var action = "<%=pdo.getRegistrationData().registrationType.toString()%>";
$.post("/userRegistration.do?action="+ action +"&ajax=1", formData,
function(data)
window.location.href = data.redirectPage;
);
);
);
【讨论】:
以上是关于Parsley 远程和服务器端验证(无法从 json 对象获取内容)的主要内容,如果未能解决你的问题,请参考以下文章
Parsley 验证不等待远程验证 AsyncValidate 完成
在 Rails 4 中正确实现 Parsley.js 自定义远程验证器
即使 Parsley 验证失败,.submit() 也会始终执行