我正在使用ASP.NET-MVC并从我的MVC操作返回JSON或HTML。
我遇到过一些需要同时返回BOTH JSON和HTML的情况。例如,我可能会更新购物车,需要返回HTML表示以及更新的JS对象模型。
我在SO上发现了很多关于何时返回哪种类型的回复的问题,但没有人谈论如何返回这两种回答。
有可靠的方法吗?必须在没有任何额外想法的情况下跨浏览器工作。
如果这不是一个好方法,我只需要发出2个请求来获取HTML然后是JSON。
答案 0 :(得分:2)
an HTML representation as well as an updated JS object model
如果您使用HTML和JS更新视图的相同部分,请考虑在JSON结果中编码的HTML。如果您尝试更新视图的不同部分,那么我将使用两种操作方法来遵循“单一责任”规则。
答案 1 :(得分:1)
要返回多部分正文,您可以将响应打包在MIME容器中。 但这会使大多数客户无法使用该响应。
我通常将html放在JSON结果中。
答案 2 :(得分:0)
我使用了两种选择
返回HTML并将json对象放入隐藏跨度的“data”属性或隐藏输入的值。在你的ajax成功方法中,从那里获取对象。
< span id ='response-message'data-result ='@ Html.Raw(JsonConvert.SerializeObject(Model.ComplexProperty))'/>
$ .post(url,function(resp,st){ if(st =='success'){ var result = $('#response-message')。data('result); if(result){ } } });
将Javascript放入从AJAX返回的部分HTML中,并从该脚本中调用现有函数。有一种可靠的运行方式。您始终可以在html中找到脚本标记,并使用eval()进行评估。