2011-06-04 44 views
0

我已經通過下面的文章和實現相同的我使用webservices而不是wcf服務,`當我運行下面的html文件,動態菜單不顯示。我可以知道我到底發生了什麼錯誤。 這是我的HTML文件。在asp.net中創建數據驅動的jquery下拉菜單時出錯使用web服務

<!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> 

這是我的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(); 
    } 

    } 
} 

回答

1

取消註釋該行...

[System.Web.Script.Services.ScriptService] 

說明是在你的代碼本身。

要允許此Web服務是從腳本調用 ,使用ASP.NET AJAX ,去掉下面行的。

+0

即使更改後我的菜單是空的 – mahesh 2011-06-04 07:24:44

相關問題