Как правильно получить HTML из ответа AJAX в формате JSON? - PullRequest
1 голос
/ 18 января 2010

У меня есть запрос AJAX, который создает «публикацию», и после успешной публикации я хочу, чтобы HTML внедрялся обратно в DOM. Прямо сейчас я возвращаю массив JSON, в котором подробно описываются успех / ошибка, и когда я добиваюсь успеха, я также включаю HTML-код сообщения в ответ. Поэтому я анализирую ответ как JSON и устанавливаю ключ в массиве JSON для набора HTML-кода.

Естественно, HTML-код нарушает работу массива JSON - что мне делать, чтобы избежать этого (или есть лучший способ сделать это?). Я получаю ответ AJAX с массивом JSON, например:

[{response:"success"},{html:'<div class="this is going to break...

Спасибо!

Ответы [ 2 ]

1 голос
/ 18 января 2010

Помимо экранирования двойных кавычек, как упомянуто BranTheMan, переводы строки также разбивают строки JSON.Вам нужно заменить символы новой строки на \n.

Лично я считаю, что этого достаточно:

// Don't know what your serverside language is, example in javascript syntax:

print(encodeJSON({
    response : "success",
    html : htmlString.replace(/\n/g,'\\n').replace(/"/g,'\\"')
}));
1 голос
/ 18 января 2010

Вопреки тому, к чему вы, вероятно, привыкли в JavaScript, «невозможно начать строку в JSON. Это строго ". Единичные кавычки работают , когда вы передаете JSON в JavaScript .. очень похоже на <br> работает , когда вы хотите поставить разрыв строки XHTML.

Итак, используйте ", чтобы открыть строку HTML, и очистите ваши кавычки с помощью \".

json.org имеет больше информации WRT, что вы должны дезинфицировать. Хотя список специальных символов невелик, вероятно, лучше использовать библиотеку, предложенную Анурагом в комментарии.

...