2012-02-20 78 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