0
私のコントローラコード:ajaxを使用してコントローラからHTMLを返す方法は?
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);
});
});
成功機能は、私はフィドラーとFirebugのを確認...実行したことがない、とのコードには、コントローラにsuccessfuly動作し、クライアントに提供します。しかし、その機能は実行されません...
私が有効なJSONを持っている場合にのみ、成功関数が実行されることを発見しました。私の推測では、JSONにはHTMLコード(tinymceのようなWYSIWYGエディター) getJSONはそれが有効ではないと言います...
これで、ajaxを使用してHTMLスニペットを送信する正しい方法は何ですか?
これを行う典型的な方法は、コントローラがjsonではなくビューまたは部分的なビューを返すようにすることです。 –
まあ、HTMLはJSONではありません。 JSONを返す場合は、JSON文字列内のHTMLを書式設定するか、またはHTMLを返します。 –
HttpServerUtility.HtmlEncodeを試しましたか?任意のhtmlを安全な文字列にエンコードします。 –