gpt4 book ai didi

javascript - 尝试将 html 标记发送到服务器时,Ajax 调用不起作用

转载 作者:行者123 更新时间:2023-12-02 17:29:49 33 4
gpt4 key购买 nike

我正在使用jquery text editor用于创建 html 标记的插件。我将文本编辑器创建的标记放在 js 变量中,并使用 ajax 调用将该变量发布到服务器。

在 cshtml 中标记:

<div>
<div id="textEditor">@Html.Raw(Model.htmlMarkUp)</div>
</div>
<input type="button" value="Save" onclick="SaveChanges();" />

JS:

$(document).ready(function () {
$('#textEditor').jqte();
});

function SaveChanges(){
var txtContent = $(".jqte_editor").html();//.jqte_editor is the div added by plugin


var path = '/Pages/saveChanges';
$.ajax({
type: "POST",
url: path,
data: { htmlMarkUp: txtContent },
success: function (result) { alert(result) },
error: function () { }
});
}

型号:

public class MyModel
{
public string htmlMarkUp{ get; set; }
}

Controller :

public string saveChanges(MyModel oModel)
{
....
}

问题:

Action 结果被正确调用,除非我不使用插件中提供的任何美化工具,即如果我在文本编辑器中编写了一个简单的纯文本,则ajax调用可以正常工作,但只要我使用任何工具就像粗体工具一样,ajax 调用停止工作。

首先我认为这是由于 Web 配置中 json 大小的限制,但这并不是问题。

为了指定 json 大小,我在 web.config 中编写如下:

<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="5000">
</jsonSerialization>
</webServices>
</scripting>
</system.web.extensions>

该问题与标记大小无关。问题是当我使用文本编辑器插件的粗斜体等任何工具时。

出了什么问题

提前致谢。

最佳答案

我遇到了问题。问题不在于文本编辑器,而在于 asp 安全性。每当我尝试通过 ajax 向服务器发送 html 内容(包含 html 标签)时,服务器都会拒绝此类请求。

当我没有使用任何文本编辑器工具时,它被视为纯字符串,但是一旦我使用任何工具(如粗体工具),我收集文本编辑器标记的变量也有 html 标签。由于安全问题,此类参数到达服务器时被服务器拒绝。

因此,为了跳过此安全检查,我将以下属性添加到我的操作结果中:

[ValidateInput(false)]
public string saveChanges(MyModel oModel)
{
....
}

这是服务器端解决方案。您还可以通过将变量编码为 base64 编码来在客户端处理该问题:

var txtContent = $(".jqte_editor").html();

var encodedHtml = $.base64.encode(txtContent );

关于javascript - 尝试将 html 标记发送到服务器时,Ajax 调用不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23168773/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com