在使用web服务的asp.net中创建数据驱动的jquery下拉菜单时出错
我已经阅读了下面的文章并实现了相同的功能,我使用的是webservices而不是wcf服务,`当我运行下面的html文件时,动态菜单不会显示。请问我到底哪里出了问题。 这是我的html文件在使用web服务的asp.net中创建数据驱动的jquery下拉菜单时出错,jquery,asp.net,wcf,web-services,Jquery,Asp.net,Wcf,Web Services,我已经阅读了下面的文章并实现了相同的功能,我使用的是webservices而不是wcf服务,`当我运行下面的html文件时,动态菜单不会显示。请问我到底哪里出了问题。 这是我的html文件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Sample Test Application</title>
<style type="text/css">
.Menu
{
width:200px;
text-align:center;
border:solid 2px gray;
padding:0px;
background-color:Silver;
cursor:hand;
font-weight:bold;
}
.MenuItem
{
width:192px;
text-align:center;
border:solid 1px silver;
padding:2px;
background-color:whitesmoke;
}
</style>
<script type="text/javascript" src="Scripts\jquery-1.4.1.js">
$(document).ready(function() {
$.ajax(
{
type: "GET",
url: "http://localhost:50542/MenuItems.asmx/GetMenus",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: CreateMenus,
error: function(err) {
alert(err.status + " - " + err.statusText);
}
}
);
});
function CreateMenus(results) {
for (var i = 0; i < results.length; i++) {
$("<div class='Menu'>" + results[i].Text + "</div>")
.click({ MenuId: results[i].MenuId }, OnMenuClick)
.appendTo("#accordionContainer");
}
}
function OnMenuClick(event)
{
$("div[id ^= 'menuItemGroup']").slideUp(500);
$.ajax(
{
type: "GET",
url: "http://localhost:50542/MenuItems.asmx/GetMenuItems",
data: '{"menuId":"' + event.data.MenuId + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(items) {
$(event.target).children().remove();
var html = "<div id='menuItemGroup" + event.data.MenuId + "' style='display:none'>";
for (var j = 0; j < items.length; j++) {
html += "<div class='MenuItem'> <a href='" + items[j].NavigateUrl + "'>" +
items[j].Text + "</a></div>";
}
html += "</div>";
$(event.target).append(html);
$("#menuItemGroup" + event.data.MenuId).slideDown(500);
},
error: function(err) {
alert(err.status + " - " + err.statusText);
}
}
)
}
</script>
</head>
<body>
<div id="accordionContainer" ></div>
<div class="Menu"></div>
<div class="MenuItem"></div>
</body>
</html>
样本测试申请
.菜单
{
宽度:200px;
文本对齐:居中;
边框:实心2倍灰色;
填充:0px;
背景颜色:银色;
光标:手;
字体大小:粗体;
}
梅努特姆先生
{
宽度:192px;
文本对齐:居中;
边框:纯银1件;
填充:2px;
背景色:白烟;
}
$(文档).ready(函数(){
$.ajax(
{
键入:“获取”,
url:“http://localhost:50542/MenuItems.asmx/GetMenus",
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:创建菜单,
错误:函数(err){
警报(错误状态+“-”+错误状态文本);
}
}
);
});
函数创建菜单(结果){
对于(var i=0;i
这是我的Web服务文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Script.Services;
namespace ServiceMahe
{
/// <summary>
/// Summary description for MenuItems
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class MenuItems : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public Menu[] GetMenus()
{
SampleDataClassesDataContext db = new SampleDataClassesDataContext();
List<Menu> menus = new List<Menu>();
var temp = from item in db.Menus
select item;
foreach (var obj in temp)
{
Menu m = new Menu();
m.MenuId = obj.MenuId;
m.Text = obj.Text;
menus.Add(m);
}
return menus.ToArray();
}
[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
public MenuItems1[] GetMenuItems(int menuId)
{
SampleDataClassesDataContext db = new SampleDataClassesDataContext();
List<MenuItems1> items = new List<MenuItems1>();
var temp = from item in db.MenuItems
where item.MenuId == menuId
select item;
foreach (var obj in temp)
{
MenuItems1 mi = new MenuItems1();
mi.MenuId = (int)obj.MenuId;
mi.MenuItemId = obj.MenuItemId;
mi.Text = obj.Text;
mi.NavigateUrl = obj.NavigateUrl;
items.Add(mi);
}
return items.ToArray();
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.Services;
使用System.Web.Script.Services;
命名空间服务
{
///
///菜单项的摘要说明
///
[WebService(命名空间=”http://tempuri.org/")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
//要允许使用ASP.NET AJAX从脚本调用此Web服务,请取消注释以下行。
//[System.Web.Script.Services.ScriptService]
公共类菜单项:System.Web.Services.WebService
{
[网络方法]
公共字符串HelloWorld()
{
返回“你好世界”;
}
[网络方法]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
公共菜单[]获取菜单()
{
SampleDataClassesDataContext db=新SampleDataClassesDataContext();
列表菜单=新列表();
var temp=数据库菜单中的源项
选择项目;
foreach(温度中的var obj)
{
菜单m=新菜单();
m、 MenuId=obj.MenuId;
m、 Text=obj.Text;
菜单。添加(m);
}
返回菜单。ToArray();
}
[网络方法]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
public MenuItems1[]GetMenuItems(int menuId)
{
SampleDataClassesDataContext db=新SampleDataClassesDataContext();
列表项=新列表();
var temp=来自db.MenuItems中的项
其中item.MenuId==MenuId
选择项目;
foreach(温度中的var obj)
{
MenuItems1 mi=新MenuItems1();
mi.MenuId=(int)obj.MenuId;
mi.MenuItemId=obj.MenuItemId;
mi.Text=obj.Text;
mi.NavigateUrl=obj.NavigateUrl;
项目.添加(mi);
}
返回项目。ToArray();
}
}
}
取消对此行的注释
[System.Web.Script.Services.ScriptService]
解释就在代码本身中
允许此Web服务
使用ASP.NET从脚本调用
AJAX,取消对以下行的注释
即使改变了这个,我的菜单还是空的