如何解决尝试发送和返回原始 html 时 Ajax 调用不起作用
我正在使用 Ajax 调用来调用 C# 方法,该方法通过删除不需要的 html 标记和属性来处理用户粘贴输入。
当我粘贴带有 html 格式(标签和属性)的内容时,我的 Ajax 调用不起作用。能否请您建议如何为这种情况定义 Ajax 参数(将原始 html 发送到服务器端代码并返回原始 html)?
查看:
@(Html.Kendo().Editor()
.Name("myEditor")
.PasteCleanup(p => p.Custom("myPasteCleanUp")
)
脚本:
function myPasteCleanUp(input) {
var response = null;
if (input != null) {
$.ajax({
type: "POST",url: '/Home/htmlTagCleanUp',data: { userInput: input },async: false,success: function (response) {
input = response;
},});
}
return input;
}
控制器:
[HttpPost]
[AllowAnonymous]
public ActionResult htmlTagCleanUp(string userInput)
{
userInput = userInput;
return Content(userInput,"text/html");
}
解决方法
事实证明缺失的部分是清理 HTML:
var = document.createElement('div');
element.innerText = html;
var sanitizedHTML = element.innerHTML;
,
阻止您的 AJAX 调用的原因是您添加了 if 条件:
if (html != null) {
}
你能告诉我 html 变量是在哪里定义的吗?尽管如此,我认为您正在尝试检查输入的空值,如果我们在它应该工作的条件下将 html 替换为 input 变量:
if (input != null) {
}
,
我想问题在于 MVC 将带有标签的数据视为错误请求。
因此建议您在控制器中的操作方法上方尝试:
None
,
看起来您需要将 [ValidateInput(false)] 属性添加到您的方法中,因为它可能会被视为 XSS 攻击。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。