JQueryvalidation远程返回结构问题
这里引用先前的问题: 如何使用jqueryvalidation远程validation来设置表单字段值并将其返回到表单操作页面?
我正在使用JQuery Validate在Coldfusion应用程序中执行远程表单validation。
当捕获远程validation错误并为用户通知做好准备时,我们正在构建一个返回结构,其不仅包含validation错误,还包含一组表单字段,供表单操作页面使用。
由于远程validation错误结构与我们的表单结构合并,我们对用户的validation显示现在正在中断。
以下是正在创建的错误文本的片段:
<cfset form.errormessagelist = listappend(form.errormessagelist, "Your assigned password is required to proceed.", form.rs)>
这是设置的初始错误结构的片段:
这是我们将表单结构附加到结果结构的位置:
这是返回validation插件的回报:
#serializeJSON(result_struct)#
以下是validation插件格式化用户显示的错误返回:
var errors = {}; $.each(data.ERRORFIELDLIST, function(i, val) { eval("errors."+val+"='"+data[i]+"'"); }); var dialog_html = ''; $.each(data.ERRORMESSAGELIST, function(i, val) { dialog_html += '- '+val+'
'; });
在我们开始将表单结构与结果结构合并之前,我们的错误报告例程按预期工作。 以下是该工作返回的#serializeJSON(result_struct)#的示例转储:
while(1);{"ERRORMESSAGELIST":["Please enter a valid password (hint: it's case sensitive).","Don't forget, if you need help at any time, please don't hesitate to click the 'Contact Support' button below for an immediate reponse. Thanks!"],"ERRORFIELDLIST":["password"]}
以下是我们开始合并结构后的样子:
while(1);{"ITEMTHUMB_TITLE":"","ERRORMESSAGELIST":"Please enter a valid password (hint: it's case sensitive).|Don't forget, if you need help at any time, please don't hesitate to click the 'Contact Support' button below for an immediate reponse. Thanks!","ITEMIMAGE_BORDER":"","CARTDOWNLOADKEY":"13FF45A0-E628-749F-C6BB79F60DF90E6F","ITEMURL_SIZE":"","ITEMNAME":"","FIELDNAMES":"VERIFIED,DLURL,DLLOCATION,ITEMNAME,ITEMTEASE,ITEMIMAGE,ITEMIMAGE_BORDER,ITEMIMAGE_ALT,ITEMIMAGE_TITLE,ITEMTHUMB,ITEMTHUMB_BORDER,ITEMTHUMB_ALT,ITEMTHUMB_TITLE,ITEMPUBNOTES,ITEMURL_SIZE,FIRST_NAME,EMAIL,PASSWORD,CARTDOWNLOADKEY,SUBMIT_BUTTON","ITEMIMAGE_ALT":"","DLLOCATION":"","ITEMTHUMB_BORDER":"","ITEMTEASE":"","RS":"|","ITEMIMAGE_TITLE":"","ITEMTHUMB_ALT":"","FIRST_NAME":"","ITEMPUBNOTES":"","EMAIL":"bmyers@bmyers.com","VERIFIED":"","ERRORFIELDLIST":"password","PASSWORD":"1asdf1","ITEMIMAGE":"","SUBMIT_BUTTON":"Get Download","DLURL":"","ITEMTHUMB":""}
所以,实际上,错误模式应该如下所示:
预期的行为
……看起来像这样:
意外行为
你能告诉我结构合并会导致这种中断的原因吗?
谢谢。
我认为structAppend()正在覆盖result_struct中的值。 尝试将呼叫更改为:
这里的false
指示CF不用struct2中的条目覆盖struct1中的条目: http ://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content = functionss_15.html
如果我们查看你的第二个JSON响应(在结构合并之后), ERRORMESSAGELIST
是一个数组,而只是一个字符串。 我们知道,字符串只是一个字符数组。 这就是你在
标签中看到每个角色的原因。 第一个JSON响应有效,因为ERRORMESSAGELIST
是一个字符串数组。