Моя форма с поддержкой jQuery не отправляется при вводе тегов html в текстовой области? - PullRequest
0 голосов
/ 01 июля 2010

У меня есть простая форма с текстовой областью и кнопкой, и я отправляю форму с функцией jQuery .post () и в формате 'json'.

Моя форма отправляется правильно, пока я не напишу некоторые html-теги, такие как жирный шрифт и т. Д., В текстовой области, после чего форма больше НЕ будет отправляться на сервер.

Я не знаю, что не так с тем, что я делаю, и как мне получить html-сегменты, отправленные с использованием jQuery в этом случае?

Редактировать: вот форма,

<textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea>
 <input name="submit" type="button" id="submit" tabindex="5" value="Submit Comment" onclick='postComment()'/>

вот JS

function postComment() {
    var comment = {};
    comment.Body = $("#comment").val();

    $.post("Comments", comment, parseComment, 'json');
};
function parseComment(data) {
    $("#commentList").html(data.Body);
};

Ответы [ 2 ]

1 голос
/ 01 июля 2010

Ваш опубликованный код должен работать (и работает для меня), если вы правильно обрабатываете текст комментария на сервере. Он не делает совсем то, что звучало так, как это было из вашего вопроса: он отправляет обычный запрос (не в формате JSON) и возвращает resopnse в формате JSON.

Если у меня есть очень простой серверный скрипт, который получает параметр «Body» и возвращает ответ в формате JSON:

{"Body": "This is the <strong>comment</strong>"}

... ваш код заменяет содержимое элемента commentList на этот HTML.

Вот JSBin, который имитирует то, что вы делаете, хотя, конечно, со статическим комментарием (поскольку JSBin будет отвечать на запросы Ajax, но только со статическим содержимым):

http://jsbin.com/usehi3

Когда вы нажимаете кнопку «Отправить комментарий», он использует ваш код, но POSTing к http://jsbin.com/olazo4,, который является просто статическим комментарием в формате JSON:

{"Body": "This is <strong>boldfaced</strong>, this is <em>italics</em>"}

Я думаю, что проблема должна заключаться в обработке на стороне сервера.

0 голосов
/ 01 июля 2010

Если вы вводите новые строки в TextArea, он автоматически создает символ новой строки "\ n". Эти символы использовались для создания проблемы в Javascript. Попробуйте удалить эти символы.

var strMultiLineText = 
    "Karen didn't know how to feel any more. She had never liked girls\n" +
    "\"that way,\" but she couldn't ignore the emotion, that surge of \n" +
    "adrenaline that coursed through her body at the sight of Kimmie's\n" +
    "wet, naked, voluptuous figure in the locker room showers.";
// Strip out all line breaks.

var strSingleLineText = strMultiLineText.replace(
    // Replace out the new line character.
    new RegExp( "\\n", "g" ), 

    // Put in ... so we can see a visual representation of where
    // the new line characters were replaced out.
    " ... " 
    );

// Alert the new single-line text value.

Вы можете проверить этот блог для более подробной информации. http://www.bennadel.com/blog/161-Ask-Ben-Javascript-Replace-And-Multiple-Lines-Line-Breaks.htm.

...