我的控制器代码:
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代码(它用于WYSIWYG编辑器,如tinymce)getJSON说它无效...
那么,使用ajax发送我的html片段的正确方法是什么?
答案 0 :(得分:1)
对我而言,即使有可能将HTML作为JSON返回也似乎有点牵强。
如果您只想返回一串HTML代码,可以简单地return Content(myModel.MyHtml)
。
在您的javascript中,您需要将$.getJSON
的调用替换为$.get
,其中$.getJSON
类似 $.get(urlGetMyHtml,
{ id: myModelId },
function(response) {
$('textarea#MyHtmlArea').val(response);
});
,但不希望答案中包含JSON数据。
Double