获取动态xml的问题

时间:2010-11-20 22:03:57

标签: asp.net jquery xml

我有一个生成动态xml的ASP.net页面,但是jquery ajax请求的get语句将无法识别该文件。这个解决方案使用php doc获取动态xml。生成xml的asp.net页面工作正常。 ajax请求永远不会成功。关于为什么非常感激的任何想法

<%@ Page Language="C#" AutoEventWireup="true"  Debug="true" ContentType="text/xml" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Data" %>
    <script runat="server">
        protected void Page_Load(object source, EventArgs e)
        {
            XmlDocument doc = new XmlDocument();
            // XML declaration
            XmlNode declaration = doc.CreateNode(XmlNodeType.XmlDeclaration, null, null);
            doc.AppendChild(declaration);

            // Root element: article
            XmlElement root = doc.CreateElement("statements");
            doc.AppendChild(root);

            string connStr = "";
            string sqlStr = "SELECT [title], [statement] FROM [a table]";
            using (SqlConnection connection = new SqlConnection(connStr))
            {
                using (SqlCommand command = connection.CreateCommand())
                {
                    command.CommandText = sqlStr;

                    connection.Open();
                    using (SqlDataReader dataReader = command.ExecuteReader())
                    {
                        int indexOftitle = dataReader.GetOrdinal("title");
                        int indexOfstatement = dataReader.GetOrdinal("statement");

                        while (dataReader.Read())
                        {
                            string title = (string)dataReader.GetValue(indexOftitle);
                            string statement = (string)dataReader.GetValue(indexOfstatement);

                            XmlElement xstatement = doc.CreateElement("statement");
                            root.AppendChild(xstatement);

                            XmlAttribute xtitle = doc.CreateAttribute("title");
                            xtitle.Value = title;
                            xstatement.Attributes.Append(xtitle);

                            XmlAttribute xtext = doc.CreateAttribute("text");
                            xtext.Value = statement;
                            xstatement.Attributes.Append(xtext);
                        }
                    }
                    connection.Close();
                }
            }


            doc.Save(Response.OutputStream);
        }
    </script>
<script type="text/javascript">
        $.ajax({
            type: "GET",
            url: "../data/genxml_docstate.aspx",
            dataType: "xml",
            success: parseXml
        });
    });
    function parseXml(xml) {
        alert("ok");
        var items = [];
        var header = 'some initial html'
        $(xml).find("statement").each(function () {
            var title = $(this).attr("title");
            var titleid = (title.substr(0, 8)).replace(" ", "_");
            items.push('<li id="' + titleid + '">' + title + '</li>');
        });

        $('#doclist').append(items.join(''));
        $("#doc_box_right").html(header);

        $(xml).find("statement").each(function () {
            var title = $(this).attr("title");
            var titleid = (title.substr(0, 8)).replace(" ", "_");
            var id = '#' + titleid;
            var statement = $(this).attr("text");
            $(id).css("cursor", "pointer");
            $(id).mouseover(function () {
                $(id).css("background-color", "gray");
                $("#doc_box_right").html('<h2>' + title + '</h2><p>' + statement + '</p>');
            });
            $(id).mouseleave(function () {
                $(id).css("background-color", "transparent");
                $("#doc_box_right").html(header);
            });
        });

    }
</script>

2 个答案:

答案 0 :(得分:1)

您没有将响应的mime类型设置为text/xml,因此浏览器不会将其识别为XML。

确保添加:

Response.ContentType("text/xml");
保存到输出流之前

答案 1 :(得分:1)

@Chris,你能尝试一下firebug .net面板,看看你是否得到了ajax的结果......这样我们就可以解决这个问题了。如果有的话,也会显示错误。