Ссылка на предыдущий вопрос приведена здесь: Как использовать удаленную проверку jquery validate для установки и возврата значений полей формы на страницу действия формы?
Я использую JQuery Validate для удаленной проверки формы в нашем приложении Coldfusion.
Поскольку ошибки удаленной проверки обнаруживаются и подготавливаются к уведомлению пользователя, мы создаем структуру возврата, которая содержит не только ошибку проверки, но и группу полей формы для использования на странице действий формы.
Поскольку структура ошибки удаленной проверки объединена с нашей структурой формы, наше отображение проверки для пользователя теперь не работает.
Вот фрагмент создаваемого текста ошибки:
<cfset form.errorfieldlist = listappend(form.errorfieldlist, "password")>
<cfset form.errormessagelist = listappend(form.errormessagelist, "Your <strong>assigned password</strong> is required to proceed.", form.rs)>
Вот фрагмент исходной устанавливаемой структуры ошибки:
<cfset result_struct = {
errorfieldlist = listtoarray(form.errorfieldlist),
errormessagelist = listtoarray(form.errormessagelist, form.RS)
}>
Здесь мы добавляем структуру формы к структуре результата:
<cfset StructAppend(result_struct, form)>
Вот возврат к плагину проверки:
<cfoutput>#serializeJSON(result_struct)#</cfoutput>
Вот плагин проверки, форматирующий возвращаемую ошибку для отображения пользователя:
var errors = {};
$.each(data.ERRORFIELDLIST, function(i, val) {
eval("errors."+val+"='"+data[i]+"'");
});
var dialog_html = '<ul>';
$.each(data.ERRORMESSAGELIST, function(i, val) {
dialog_html += '<li><span style="color:#cd0a0a;">'+val+'</span></li>';
});
ДО того, как мы начали объединять структуру формы со структурой результата, наша процедура сообщения об ошибках работала как ожидалось. Вот пример дампа #serializeJSON (result_struct) # этого рабочего возврата:
while(1);{"ERRORMESSAGELIST":["Please enter a valid <strong>password<\/strong> (hint: it's case sensitive).","Don't forget, if you need help at any time, please don't hesitate to <strong>click the 'Contact Support' button below<\/strong> for an immediate reponse. Thanks!"],"ERRORFIELDLIST":["password"]}
А вот как это выглядит ПОСЛЕ того, как мы начали объединять структуры:
while(1);{"ITEMTHUMB_TITLE":"","ERRORMESSAGELIST":"Please enter a valid <strong>password<\/strong> (hint: it's case sensitive).|Don't forget, if you need help at any time, please don't hesitate to <strong>click the 'Contact Support' button below<\/strong> 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":""}
Итак, по сути, модальная ошибка, которая должна выглядеть так:
ожидаемое поведение
... вместо этого выглядит так:
неожиданное поведение
Можете ли вы сказать мне, что вызывает этот разрыв в результате слияния структур?
Спасибо.