JSON:处理textArea中的换行符(以及其他无效的JSON-Chars)

时间:2014-08-20 08:28:08

标签: javascript jquery json

在HTMl上我有textarea (a comment box) (id = #comment")可以包含多行。当我用ajax发送它时我没有问题。虽然在检索此数据时,JSON数据不再有效(在json的次要提取之下:

"items" : [  {  
     ...<<other values>>...,
     "comment": "Approved!!!!

      Or Not

      Or Did I


      Approve this....." 
     ,...<<other values>>...}

所以我假设在将它发送到服务器时我必须转换我的textarea的值。 但是当我尝试使用JSON.Parse时出现错误:

    $.ajax({
        type: "POST",
        url: "updateitem.aspx",
        data: { myId: $("body").attr("id"),
            comment: JSON.parse($("#comment").val()),
        }
        ... })

但这会导致错误:

SyntaxError: JSON.parse: unexpected keyword at line 1 column 1 of the JSON data
comment: JSON.parse($("#comment").val()),

所以我的问题确实是:如何将数据从textarea发送到服务器。同时保留任何非JSON字符&amp;换行符。解决方案可能很简单,但我似乎找到的只有:Past JSON in textareaReplaceAll(这可能有用,但我正在寻找更好的解决方案)

尝试了以下解决方案,但无济于事。 how-can-i-pass-textarea-data-via-ajax-that-contains-ampersands-and-or-linebreaks

1 个答案:

答案 0 :(得分:1)

您需要使用JSON.stringify

    var comment = JSON.stringify($("#comment").val());

    // Now comment is a JSON string to send to your server

    $.ajax({
            type: "POST",
            url: "updateitem.aspx",
            data: {
                    myId: $("body").attr("id"),
                    comment: comment,
            }
    ... })

请参阅jsfiddle:http://jsfiddle.net/14cjojhq/1/