extjs用ajax获取json数据不能转换成Store
本帖最后由 showbo 于 2012-12-20 09:05:42 编辑 前台代码:
Ext.onReady(function () {
var store = new Ext.data.Store({
fields: [{ name: 'user_id' }, { name: 'user_name' }, { name: 'ssyj', type: "float"}],
reader: new Ext.data.JsonReader({ totalProperty: "results", root: 'data' })
// listeners: {
// load: function () {
// alert(store.getCount());
// }
// }
});
var requestConfig = {
url: '/WebService/test/tb_data.ashx', //请求的服务器地址
params: { userName: 'tom', password: '123' }, //请求参数
customer: '自定义属性', //附加属性
callback: function (options, success, response) {//回调函数
alert(response.responseText);
var forminfo = Ext.decode(response.responseText);
store.loadData(Ext.JSON.decode(response.responseText,true));
alert(store.getCount());
}
}
Ext.Ajax.request(requestConfig); //发送请求返回的json数据字符串:
{"results":3,"data":[
{"user_name":"郑正英","user_id":"10","ssyj":"39569.0100"},
{"user_name":"王雪梅","user_id":"11","ssyj":"557619.9900"},
{"user_name":"张丹青","user_id":"12","ssyj":"116000.0000"},
{"user_name":"张海东","user_id":"13","ssyj":"1412742.9900"}]}
后台代码:
public void ProcessRequest(HttpContext context)
{
context.Request.ContentEncoding = Encoding.GetEncoding("UTF-8");
context.Response.ContentEncoding = Encoding.GetEncoding("UTF-8");
context.Response.Charset = "UTF-8";
context.Response.ContentType = "text/plain";
string result = string.Empty;
string ygk_list = string.Empty;
string strSQL = string.Empty;
string state = context.Request["userName"];
string state1 = context.Request["password"];
try
{
strSQL = string.Format(@"select tb_user.user_name,tb_fwcjqr.user_id,sum(tb_fwcjqr.htzj)as ssyj from tb_fwcjqr
inner join tb_user on tb_user.id = tb_fwcjqr.user_id
group by tb_user.user_name ,tb_fwcjqr.user_id");
DataTable dt = LTP.DBUtility.DbHelperSQL.Query(strSQL).Tables[0];
if (dt.Rows.Count > 0)
{
result = LTP.BLL.Ext_Json.DataTable2Json(dt);
}
else
{
result = "false";
}
}
catch
{
result = "error";
}
context.Response.Write(result);
}
输出store.getCount()的结果是0.
[解决办法]
store.loadData(Ext.JSON.decode(response.responseText,true).data);
loadData方法加载的是数组,数组内容不能放在json里面
这个问题和你的一样:http://bbs.csdn.net/topics/390316151,loadData不能更新总记录数的,需要自己继承Ext.data.Store来提供一个API给外部更新总记录数
刚写的一篇内容,参考下:Ext4更新store总记录数量