【发布时间】:2017-01-03 22:29:18
【问题描述】:
我的控制器代码:
public async Task<ActionResult> GetHtml(int id)
{
var myModel = await db.Models.FindAsync(id);
return Json(new { jsonData = myModel.MyHtml }, JsonRequestBehavior.AllowGet);
}
我的查看代码:
$('#MyDropDownList').on('change', function() {
var myModelId = $(this).val();
var urlGetMyHtml = '@Url.Action("GetHtml", "MyHtmlController")';
$.getJSON(
urlGetMyHtml,
{ id: myModelId },
function(jsonData) {
console.log(jsonData);
$('textarea#MyHtmlArea').val(jsonData);
});
});
成功函数永远不会执行...我检查了 Fiddler 和 Firebug,代码在控制器上成功运行并在客户端上交付。但是后来函数没有执行……
研究,我发现只有当我们有一个有效的 JSON 时才执行成功函数,然后我的猜测是我的 JSON 包含 HTML 代码(它用于所见即所得的编辑器,如 tinymce)getJSON 说它无效......
那么,使用 ajax 发送我的 html sn-p 的正确方法是什么?
【问题讨论】:
-
执行此操作的典型方法是让您的控制器返回视图或部分视图而不是 json。
-
好吧.. HTML 不是 JSON。因此,如果您想返回 JSON,请在 JSON 字符串中格式化 HTML,或者...返回 HTML。
-
你试过 HttpServerUtility.HtmlEncode 吗?这会将任何 html 编码为安全字符串。
标签: javascript jquery json asp.net-mvc