我有一个名为 movie_genres 的表:
| 流派 ID | 流派名称 |
我将从数据库中填充这些类型的组合框(Ext js)
...
/* Remote data store */
var movie_genres = new Ext.data.Store({
reader: new Ext.data.JsonReader({
fields: ['genre_id', 'genre_name'],
root: 'rows'
}),
proxy: new Ext.data.HttpProxy({
url: '../GenresWebService.asmx/GetGenres'
})
});
var movie_form = new Ext.FormPanel({
url: 'movie-form-submit.aspx',
renderTo: 'myform',
frame: true,
title: 'Movie Information Form',
width: 400,
defaults: {
anchor: '100%'
},
items: [{
xtype: 'combo',
hiddenName: 'genre',
fieldLabel: 'Genre',
mode: 'remote',
store: movie_genres,
displayField: 'genre_name',
valueField: 'genre_id'
},
...
我在 ASP.NET 中使用 WebService 从数据库中以 json 格式的字符串获取流派。
public class GenresWebService : System.Web.Services.WebService
{
[WebMethod]
public string GetGenres()
{
SqlConnection con = new SqlConnection(connectionString);
con.Open();
String sql = "SELECT genre_id, genre_name FROM movie_genres";
SqlDataAdapter da = new SqlDataAdapter(sql, con);
DataSet genres = new DataSet();
da.Fill(genres, "movie_genres");
JavaScriptSerializer jss = new JavaScriptSerializer();
string json = jss.Serialize(genres);
con.Close();
return "{rows:" + json + "}";
}
}
什么也没有发生,我的组合框是空的,没有流派,没有错误,没有响应,什么都没有......任何想法,我的代码有什么问题?
谢谢
编辑
我autoLoad: true
像@allie提到的那样添加到商店定义中,现在我在萤火虫上得到一个错误说:
Get http://localhost:12345/GenresWebService.asmx/GetGenres?_dc=1344964138589 500 Internal Server Error 17 ms.
firebug 上的响应将错误解释如下:
System.InvalidOperationException:在序列化“System.Globalization.CultureInfo”类型的对象时检测到循环引用。在 System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)....
我试图调试 GenresWebService 并且我在这一行得到了上面的错误:
string json = jss.Serialize(genres);
我不知道这实际上意味着什么:(