我是extjs新手,我在main.aspx的JavaScript区域写了一个Ext.onReady(function () {xxx}函数,里边包含了一个方法,是用来调用后台函数并获取其返回值得,函数如下
Ext.Ajax.request({
url: '/Main.aspx/InitMenuJson',
method: 'GET',
success: function (response) {
var trn = new Ext.data.TreeStore({ text: 'root' });
trn = response;
//Ext.get("trpl").appendChild(trn);
},
failure: function (response, options) {
Ext.MessageBox.alert('失败', response.status);
}
});
以上是前台js函数,页面是Main.aspx,InitMenuJson是调用的后台方法名称。返回的是object,
后台方法是
public object InitMenuJson()
{
List<ExtJs.Model.System.DIC_SYS_MENU> listModel=new List<ExtJs.Model.System.DIC_SYS_MENU>();
ExtJs.Model.System.DIC_SYS_MENU Model = new ExtJs.Model.System.DIC_SYS_MENU();
listModel = DIC_SYS_MENU_BLL.GetDataByModelWithList(Model);
var jser = new JavaScriptSerializer();
var json = jser.Serialize(listModel);
//var sJson = jser.Deserialize<List<ExtJs.Model.System.DIC_SYS_MENU>>(json);
return json;
}
后台返回的其实是一个json数据格式对象。
但是前台我跟进了response,结果显示,人家把Main.aspx主页面的前台代码一股脑儿给我显示出来了。
前台要的是 返回的json啊,到底什么情况啊 高分奉上
把你的json串用resposne.write(json)返回来就行了 不是return
public void InitMenuJson()
{
List<ExtJs.Model.System.DIC_SYS_MENU> listModel=new List<ExtJs.Model.System.DIC_SYS_MENU>();
ExtJs.Model.System.DIC_SYS_MENU Model = new ExtJs.Model.System.DIC_SYS_MENU();
listModel = DIC_SYS_MENU_BLL.GetDataByModelWithList(Model);
var jser = new JavaScriptSerializer();
var json = jser.Serialize(listModel);
//var sJson = jser.Deserialize<List<ExtJs.Model.System.DIC_SYS_MENU>>(json);
resposne.write(json。toString());
}
前台该怎么写呢,我就要那个返回值了,response.resposneText依然是Main.aspx的前台代码。。。
追答url: '/Main.aspx/InitMenuJson', 你这个地方不对,除非你的是webmethod。给你看个例子,但不是ext的也是放回json的
后台
protected void Page_Load(object sender, EventArgs e)