界面:
<body onload="bodyonload()"> <div id="header" class="png_bg"> <div id="head_wrap" class="container_12"> <div id="logo" class="grid_4"> <h1><span>logo</span></h1> </div> <div id="controlpanel" class="grid_8"> <ul> <li><p><strong>你好,用户名</strong></p></li> <li><a href="#" class="first">设置</a></li> <li><a href="#" class="last">退出登录</a></li> </ul> </div> <div id="navigation" class=" grid_12"> <ul id="MenuListF"> </ul> </div> </div><!-- end headwarp --> </div><!-- end header --> <!-- staqrt subnav --> <div id="sub_nav"> <div id="subnav_wrap" class="container_12"> <!-- start sub nav list --> <div id="subnav" class=" grid_12"> <ul id="MenuListSon"> </ul> </div> </div> </div> <div id="main_content_wrap" class="container_12"> <!-- start icon dock--> <div class="clearfix"> @RenderBody() </div> <div id="footer" class="grid_12" style="margin-top:30px"> <p>© Copyright 2015 <a href="#" target="_blank">馨湾</a> </p> </div> </div> @Scripts.Render("~/script/jquery") @Scripts.Render("~/script/metro") @RenderSection("scripts", required: false) </body>
提交的方法[body里面的onload方法]:
function bodyonload() //加载的是父ID为0的,即最主要的菜单 { var data = 0; $.ajax({ type: 'post', async: false, data: data, url: '/Menu/GetListF', dataType: 'html', success: function (json, textStatus) { $("#MenuListF").append(json); }, complete: function (XMLHttpRequest, textStatus) { }, error: function (XMLHttpRequest, textStatus, errorThrown) { $.messager.alert("失败提示", textStatus); } }); GetMenu(0);//初始化加载0的 } function GetMenu(fid)//获取 { var data = fid; $.ajax({ type: 'post', async: false, data: data, url: '/Menu/GetListSon', dataType: 'json', success: function (json, textStatus) { if (json.Total > 0) { for (var i = 0; i < json.Total; i++) { var ShowName = json.Row[i].ShowName; var URL = json.Row[i].URL; var Name = json.Row[i].Name; $("#MenuListSon").append("<li><a href=" + URL + " name=" + ShowName + ">" + Name + "</a></li>"); } } }, complete: function (XMLHttpRequest, textStatus) { }, error: function (XMLHttpRequest, textStatus, errorThrown) { $.messager.alert("失败提示", textStatus); } }); }
ajax提交的控制器方法:
public string GetListF(int id) { List<CM_Menu> list= _menuService.GetListF(id); string html = ""; if (list.Count > 0) { foreach (var item in list) { html += "<li><button onclick=GetMenu(" + item.Id + ") class='button'>" + item.Name + "</button>"; } } return html; } public List<CM_Menu> GetListSon(int id) { return _menuService.GetListSon(id); }
看页面加载的时候,到complete中的时候,没有进控制器,要怎么解决,或者说要怎么改呢?
var data = 0;你需要直接在url中凭借?id=0
这个的目的只是传递一个父ID为0的信息,就是让控制器查询的时候查询父id为0的
@_Vegetables: 我的意思是你传参方式有问题.楼下贴代码.这种常识问题实在不愿意理.....
@吴瑞祥: 好吧,其实根本问题不是哪里,哪里我后台写的是request,给了一个对象进去的,主要是工厂里面的编译的时候出错了,不过还是谢谢你
$.ajax({ type: 'post', async: false, data: {id:data}, url: '/Menu/GetListF', dataType: 'html', success: function (json, textStatus) { $("#MenuListF").append(json); }, complete: function (XMLHttpRequest, textStatus) { }, error: function (XMLHttpRequest, textStatus, errorThrown) { $.messager.alert("失败提示", textStatus); } });
你用get方法试试,或者你把后台的 public string GetListF(int id) 标识成使用 post 方法
额, 谢谢了,问题OK了,工厂里面的写错了