如何使用ajax从控制器返回HTML?

时间:2017-01-03 22:29:19

标签: javascript jquery json asp.net-mvc

我的控制器代码:

    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片段的正确方法是什么?

1 个答案:

答案 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
相关问题