将html内容发布到控制器方法会删除部分内容

时间:2015-11-22 13:00:53

标签: javascript jquery html asp.net-mvc

这是js函数:

    var onContentChange = function () {
        var content =   
          $("#blogpost-content").data("kendoEditor").value($("#value").val());
        console.log(content);
        $http.post("/Map/SaveBlogPostContent?destinationId=" + 
           $("#currentDestinationId").val() + 
           "&blogPostId=" + $("#currentBlogPost").val() + "&content=" + content)
                .then(onSaveBlogPostContent, onError);
    }

此方法是在更改textarea时触发的。 当它到达console.log时,它会写出当前在textarea中的正确文本,但是当它将数据发布到我的控制器方法时,它只会收到一些内容。 这是为什么?

3 个答案:

答案 0 :(得分:0)

你很可能有非法字符'在你的textarea中,尝试转义内容变量,改变它:

var onContentChange = function () {
    var content = $("#blogpost-content").data("kendoEditor").value($("#value").val());
    console.log(content);
    $http.post("/Map/SaveBlogPostContent?destinationId=" + encodeURIComponent($("#currentDestinationId").val()) + "&blogPostId=" + encodeURIComponent($("#currentBlogPost").val()) + "&content=" + encodeURIComponent(content))
            .then(onSaveBlogPostContent, onError);
}

encodeURIComponent()是那里的重要部分。

答案 1 :(得分:0)

由于这是get而不是post,因此在get请求中可以发送的数据长度有限,这取决于浏览器。你还想确保你没有任何需要转义的角色。例如。在网址中使用的章程如?或者&要么 /。你可以通过使用来逃避这些。

var contentToPass = encodeURIComponent(content);

encodeURIComponent

答案 2 :(得分:0)

试试这个:

var onContentChange = function () {
    var content =   
    $("#blogpost-content").data("kendoEditor").value($("#value").val());
    console.log(content);
    $http.post("/Map/SaveBlogPostContent", {
       destinationId: $("#currentDestinationId").val(),
       blogPostId: $("#currentBlogPost").val(),
       content: content
    }).then(onSaveBlogPostContent, onError);
}