2010-11-20 14 views
1

Dinamik xml üreten bir ASP.net sayfası var ancak jquery ajax isteğinin get ifadesi dosyayı tanımıyor. Bu çözüm, dinamik xml almayı bir php doc ile çalıştı. Xml üreten asp.net sayfası iyi çalışıyor. Ajax talebi asla başarılı olmaz. çok sen text/xml yanıtın MIME türü ayarı olmayansorunu dinamik xml alma

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

Bu başarı gibi başarılar deneyin: işlev (veri) {} – kobe

+1

, bahsettiğim sytax ile yukarıdaki başarıların içine bir uyarı koyun. ve hatta veri atayıp vermemek için firebug .net panel ile yapabilirsiniz. – kobe

+0

@gov - ajax başarı işlevi daha önce iyi çalıştı ... ?? –

cevap

1

@Chris, firebug .net panelini deneyebilir ve ajax için sonuçlar alıp alamayacağınızı görebilir ... böylece sorunu ortadan kaldırabiliriz. Hata varsa bunları da gösterir.

1

takdir, böylece tarayıcı XML olarak tanımayacaktır neden olarak herhangi bir fikir.

Bir eklemek emin olun:

Response.ContentType("text/xml"); 

çıkış akışına kaydetmeden önce.

+0

Bunu denedim ama işe yaramadı –

+2

@ Chris, firebug .net panelini deneyebilir ve ajax için sonuçlar alıp alamayacağınızı görebilir ... böylece sorunu ortadan kaldırabiliriz. herhangi. – kobe

+0

@Bir görsel stüdyo kodunda da bir kesme noktası, sunucunun herhangi bir hata atıp atmadığını görebilirsiniz, görsel stüdyo seçeneğinden – kobe

İlgili konular