2010-11-20 3 views
1

動的なxmlを生成するASP.netページがありますが、jQueryのajaxリクエストのget文はファイルを認識しません。このソリューションは、動的なXMLを取得するPHPのドキュメントと協力していました。 xmlを生成するasp.netページは正常に動作します。 ajaxリクエストは決して成功しません。ずっと動的なXMLを取得する問題

<%@ 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> 
+0

この成功のようなsuccesを試してください:function(data){} – kobe

+1

私は上記のsytaxで上記の成功の中で警告を出します。あなたがfirebug .netパネルであっても、データを取得するかどうかは問わない。 – kobe

+0

@gov - Ajaxの成功関数は前に正常に機能しましたか? –

答えて

1

@Chris Firebugのネットパネルを試してみて、ajaxの結果が得られるかどうか確認してください。そうすれば、問題を取り除くことができます。

1

に感謝あなたはtext/xmlへの応答のMIMEタイプを設定していないので、ブラウザはXMLとしてそれを認識しません理由として任意のアイデア。

Response.ContentType("text/xml"); 

あなたは、出力ストリームに保存する前に:

は、追加を確認してください。

+0

私はこれを試しましたが、うまくいきませんでした –

+2

@Chris、firebug .netパネルを試してみてください、そしてあなたがajaxの結果を得ているかどうかを見てください...そうすれば、問題を取り除くことができます。どれか。 – kobe

+0

@ Visual Studioのコードでもブレークポイントを入力すると、サーバーがエラーをスローしているかどうかを確認できます。Visual Studioオプション – kobe

関連する問題