У меня есть вызов Ajax, который возвращает хэш json, включая ошибки, если что-то пойдет не так. Вот пример:
{"success":false,"errors":{"image":["file must be at least 1024x768px in size."]},"content_type":"text/json"}
На основании этого вопроса Мне удалось выяснить, что я могу напечатать часть этого хэша следующим образом:
JSON.stringify( responseJSON.errors )
Тем не менее, он по-прежнему печатается как хеш-код, например: {"image":["file must be at least 1024x768px in size."]}
Я действительно хотел бы преобразовать это в просто:
Image file must be at least 1024x768px in size.
Если не использовать .replace
после stringify
, есть ли простой способ сделать это? Обратите внимание, что хэш ошибок может содержать больше ошибок, например:
{"image":["file must be at least 1024x768px in size."],"file":["type is invalid, must be jpg, png, or gif"]}
Обновление: Я не знаю почему, но ни одна из функций, показанных ниже, не будет возвращать строку при передаче объекта responseJSON
. Тем не менее, добавление непосредственно в DOM с помощью jQuery сработало. Вот что я в итоге сделал:
// In the middle of an ajax callback
$('.qq-upload-failed-text:last').append(': <span class="explanation"></span>');
formatErrors( responseJSON );
// As a stand-alone function so it can be reused
function formatErrors( response ) {
$.each( response.errors, function(key, value) {
$('span.explanation:last').append( key + " " + value );
});
}
Почему это правильно вставило бы текст в dom, но использование функции Dampsquid или любой другой вернуло бы только пустую строку - мне не понятно.