2012-02-20 125 views
0

我有一個連接到Northwind數據庫來獲得類別列表的頁面...

protected void Page_Load(object sender, EventArgs e) 
    { 
     var cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["cnnString"].ConnectionString); 
     var cmd = new SqlCommand("SELECT CategoryID, CategoryName FROM Categories ORDER BY CategoryName", cnn); 
     using (cnn) 
     { 
      cnn.Open(); 
      var dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
      if (dr.HasRows) 
      { 
       var sb = new StringBuilder(); 
       var sw = new StringWriter(sb); 

       using (JsonWriter jw = new JsonTextWriter(sw)) 
       { 
        jw.Formatting = Formatting.Indented; 

        jw.WriteStartArray(); 
        while (dr.Read()) 
        { 
         jw.WriteStartObject(); 
         jw.WritePropertyName("CategoryID"); 
         jw.WriteValue(dr.GetInt32(0)); 
         jw.WritePropertyName("CategoryName"); 
         jw.WriteValue(dr.GetString(1)); 
         jw.WriteEndObject(); 
        } 
        jw.WriteEndArray(); 
        jw.Flush(); 
        Response.Write(sb); 
       } 
      } 
     } 
    } 

該作品一樣的預期。在我的調用頁面中,我有一個下拉列表,我試圖用jQuery來填充它。也許我做錯了。我假設它從包含和字符串的.aspx文件獲取整個文本並導致它無效?如果是這樣,那麼做這件事的正確方法是什麼,或者我做錯了什麼?

$.getJSON('GetCategories.aspx', function (data) { 
     alert('success!'); 
     $.each(data, function (key, val) { 
      $('#ddlCategories').append('<option></option>').val(key).html(val); 
     }); 
    }); 

警報從未發生過,因此胡扯出來獲取文件。由於Chrome Inspector無法給出控制檯錯誤,因此文件名稱正確無誤。

+0

另一個答案,你可以發佈您的解決方案,它標誌着作爲答案? – Lalman 2013-03-27 07:22:55

+0

這是一段時間以前,我會在稍後查找它,看看它是什麼併發布它。 – 2013-03-27 13:37:02

回答

0

你應該看看HttpHandlers,因爲它們有更低的開銷並且可以被限制到你想要的輸出。

我使用的HttpHandler作爲例子在這裏Accessing Image from App_data folder

+0

謝謝你的建議,我會在另一個時間看看它,但只是想知道我在這裏先走到哪裏。因此,從這個例子中,假設我的GetCategories.aspx頁面上有一個div,我將JSON寫入到...中,並使用$ .getJSON(),我可以從GetCategories.aspx頁面獲取特定元素嗎? – 2012-02-21 00:17:44

+0

我得到了這個工作,我現在很好,謝謝你的幫助。 – 2012-02-21 00:47:13

+0

您可以發佈您的解決方案並將其標記爲答案嗎? – 2012-02-21 01:58:48