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是一个字符串数组。