C# extjs 调用后台函数 获取函数返回值的问题

我是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的

$.ajax({
                url: "YanQiYearReport.aspx", //路径
                type: 'post',
                data: { Serach: "Serach", Year: $.trim($("#date").val()) },//参数

                dataType: "html",
                beforeSend: function (XMLHttpRequest) {
                    $("#loading").css("display", "block");
                },

                complete: function (XMLHttpRequest, textStatus) {

                    $("#loading").css("display", "none");

                },
                success: function (data) {
                 此处返回json
                }

            });

后台

 protected void Page_Load(object sender, EventArgs e)
    {
       
        if (!IsPostBack)
        {
            
        string Serach = Request["Serach"];
        if (Serach == "Serach")
        {
            Response.Write(Load());//Load 你给成你的方法就行啦,load 方法的返回类型是 string
            Response.End();
        }

    }

温馨提示:答案为网友推荐,仅供参考