javascript - 如何使用ajax从 Controller 返回HTML?

标签 javascript jquery json asp.net-mvc

我的 Controller 代码:

    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,代码在 Controller 上成功运行并在客户端上交付。但随后该函数没有执行...

研究后,我发现成功函数仅在我们有有效的 JSON 时才会执行,那么我的猜测是我的 JSON 包含 HTML 代码(适用于所见即所得编辑器,如tinymce)getJSON 说它无效...

那么,使用 ajax 发送 html 片段的正确方法是什么?

最佳答案

对我来说,将 HTML 作为 JSON 返回似乎有点牵强,尽管这是可能的。

如果您只想返回 HTML 代码字符串,则可以简单地返回 Content(myModel.MyHtml)

在你的 JavaScript 中,你需要用一个简单的 $.get 替换对 $.getJSON 的调用,它类似于 $.getJSON 但响应中不需要 JSON 数据。

    $.get(urlGetMyHtml,
          { id: myModelId },
          function(response) {
              $('textarea#MyHtmlArea').val(response);
          });

关于javascript - 如何使用ajax从 Controller 返回HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41453382/

相关文章:

javascript - 在 chrome 扩展上全局存储文本,并在加载时重用它

java.lang.NoSuchFieldError : FAIL_ON_SYMBOL_HASH_OVERFLOW] in elasticsearch Watcher plugin 错误

javascript - Owl Carousel 2 中的 dotData 不工作

javascript - 如何在node.js中以特定时间戳搜索数组中的结果

javascript - 在 JavaScript 中识别位掩码中的湖泊

jquery - 如何在最后一个 <div> 上添加 “fit” 类

javascript - 如何在 msstackedcolumn2dlinedy 融合图表中隐藏 y 轴

javascript - 使用 jQuery sortable() 对元素重新排序并在 PHP 中输​​出正确的顺序

javascript - 使用 Ajax 请求作为源数据的 Jquery 自动完成搜索

javascript - 将对象数组映射到 CoffeeScript 中的键/值对