[英]asp.net mvc and jquery
在我的MVC视图(使用VS 2012 RC)中,我试图使用jQuery解析从Controller返回的XML数据。 但是,我的重点是利用jQuery $ .ajax()函数。 问题是ajax没有从我的控制器返回XML Doc。 它返回一些格式化的HTML。
示例:实际上,我确实可以将其直接返回到视图中,但是我不希望整个XML文档都以这种方式显示。 例如,从@Model对象获取XML :
@model RazorMvc.Models.PortfolioResponse
@{
ViewBag.Title = "PortfolioList";
}
...
<div class="XmlResp">
<@Html.Raw(@Model.XmlPortfolioResponse.OuterXml.ToString())>
</div>
但是,我更喜欢使用$ .ajax()来检索我的XML文档。 唯一的问题是我的控制器代码的返回值不是XML; 它返回一些格式化的HTML文本:
这是一个测试div!显示的是一些格式化的HTML,如下所示:
哇,我们到哪里去了? 我的公司解决方案注册登录首页关于联系方式投资组合投资组合列表投资组合列表这是一个测试部门!!!©2012-My ASP.NET MVC ApplicationFacebookTwitter
这是jQuery代码。 我希望在DATA对象中获得XML文档:
<script type="text/javascript"> $.ajax({ url: "/Portfolios/PortfolioList", type: "POST", async: true, success: function(data){ if (!data) alert("No xml data returned."); else{ var $xml = $(data); var $title = $xml.find("portfolioSummary").text(); $('.xmlTest').text("Wow are we getting somewhere ?!!!"); $('.xmlTest').append($xml.text()); alert("success!"); } }, error: function (error) { alert("failed"); } });
一些指导和建议将不胜感激。 谢谢,鲍勃
您不需要视图。 您可以直接从控制器操作中返回XML:
[HttpPost]
public ActionResult PortfolioList()
{
string xml = ...
return Content(xml, "text/xml");
}
现在,由于您已经设置了正确的内容类型响应标头,因此jQuery将知道如何解析它,并且在成功回调中,您将能够直接使用此XML流。
您可能需要在.ajax()设置中将dataType指定为XML,如下所示
$.ajax({
url: "/Portfolios/PortfolioList",
type: "POST",
//add this line
dataType: "XML",
async: true,
success: function(data){
if (!data)
alert("No xml data returned.");
else{
var $xml = $(data);
var $title = $xml.find("portfolioSummary").text();
$('.xmlTest').text("Wow are we getting somewhere ?!!!");
$('.xmlTest').append($xml.text());
alert("success!");
}
},
error: function (error) {
alert("failed");
}
});
根据您的需求,此功能的JQuery文档中还有其他选项
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.