6

我在这个网站上看到了很多对我有很大帮助的答案,但在这个网站上,我需要请大家帮助我。

我有一个 textarea 作为 Html 编辑器,用于将 html 内容传递到服务器并将其附加到新创建的 Html 页面(用于用户 POST 等),但 jquery 或 ASP.NET 不接受 jquery 通过数据传递的 Html 内容: {}

--对于jQuery:

  $("#btnC").click(function (e) {
    e.preventDefault();

    //get the content of the div box 
    var HTML = $("#t").val();

    $.ajax({ url: "EditingTextarea.aspx/GetValue",
        type: "POST",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: '{num: "' + HTML + '"}', // pass that text to the server as a correct JSON String
        success: function (msg) { alert(msg.d); },
        error: function (type) { alert("ERROR!!" + type.responseText); }

    });

和服务器端 ASP.NET:

[WebMethod]
public static string GetValue(string num)
{ 
    StreamWriter sw = new StreamWriter("C://HTMLTemplate1.html", true);
    sw.WriteLine(num);
    sw.Close();       
return num;//return what was sent from the client to the client again 
}//end get value

Jquery 部分给了我一个错误: Invalid object pass in and error in System.Web.Script.Serialization.JavascriptObjectDeserializer.

就像 jquery 不接受带有 html 内容的字符串。我的代码有什么问题?

4

3 回答 3

15

像这样通过

JSON.stringify({'num':HTML});

您必须正确地将内容字符串化为 JSON。HTML 可能包含会使 JSON 表示法无效的语法。

var dataToSend = JSON.stringify({'num':HTML});
     $.ajax({ url: "EditingTextarea.aspx/GetValue",
            type: "POST",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: dataToSend , // pass that text to the server as a correct JSON String
            success: function (msg) { alert(msg.d); },
            error: function (type) { alert("ERROR!!" + type.responseText); }

        });
于 2013-09-11T06:20:48.383 回答
11

你可以用这个

var HTML = escape($("#t").val());

在服务器端,您可以对其进行解码以获取 html 字符串

HttpUtility.UrlDecode(num, System.Text.Encoding.Default);
于 2013-09-11T02:51:35.240 回答
2

确保JSON.stringify,dataType: "json" 和 contentType: "application/json; charset=utf-8"存在于 ajax 调用中。

 [HttpPost]
        public ActionResult ActionMethod(string para1, string para2, string para3, string htmlstring)
        {
               retrun view();
        }
   $.ajax({

            url: '/Controller/ActionMethod',
            type: "POST",
            data: JSON.stringify({
                para1: titletext,
                para2: datetext,
                para3: interchangeNbr.toString(),
                htmlstring : messageText.toString()
            }),
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            cache: false,
            success: function successFunc(data) {

            },
            error: function errorFunc(jqXHR) {
                $('#errroMessageDiv').css({ 'color': 'red' }).text(jqXHR.message).show();
            }
        });
于 2014-10-20T15:41:54.423 回答