0

在我的 MVC 视图中(使用 VS 2012 RC),我试图使用 jQuery 来解析从我的控制器返回的 XML 数据。但是,我的重点是利用jQuery $.ajax() 函数。 问题是 ajax 没有从我的控制器返回 XML Doc;它返回一些格式化的 Html。

示例:确实可以将它直接返回到 a 中的视图,但我不希望整个 XML 文档以这种方式显示。例如,从@Model 对象获取 XML:

@model RazorMvc.Models.PortfolioResponse
@{
    ViewBag.Title = "PortfolioList";
}              
 ...
<div class="XmlResp">
        <@Html.Raw(@Model.XmlPortfolioResponse.OuterXml.ToString())>
</div> 

但是,我更喜欢使用 $.ajax() 来检索我的 XML Doc。唯一的问题是我的控制器代码的返回值不是 XML;它返回一些格式化的 HTML 文本:

这是一个测试 div !!!

显示的是一些格式化的 HTML,如下所示:

哇,我们到了某个地方吗?!!!我的公司解决方案注册登录首页关于联系我们投资组合列表投资组合列表这是一个测试 div !!!© 2012 - 我的 ASP.NET MVC 应用程序FacebookTwitter

这是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");
        }

    });

一些指导和建议将不胜感激。谢谢,鲍勃

4

2 回答 2

1

你不需要视图。您可以直接从控制器操作返回 XML:

[HttpPost]
public ActionResult PortfolioList()
{
    string xml = ...
    return Content(xml, "text/xml");
}

现在,由于您已设置正确的内容类型响应标头,jQuery 将知道如何解析它,并且在您的成功回调中,您将能够直接使用此 XML 流。

于 2012-06-27T18:17:17.283 回答
0

您可能需要在 .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 文档中还有其他选项

于 2012-06-27T18:17:04.310 回答