2011-09-07 19 views
0

我想在用戶按下功能鍵時打開html頁面。如何從主頁面調用Webservice功能

現在功能鍵的捕獲工作正常,但打開相應頁面的邏輯寫在母版頁的代碼後面。

我在互聯網上看到,如果我想在代碼背後調用函數,那麼我必須創建一個web服務並從母版頁調用webservice方法。

但由於某種原因,這是行不通的。可能是我沒有正確調用Web服務。

可以請一些身體幫忙嗎?

非常感謝

<cc1:ToolkitScriptManager ID="ScriptManager1" runat="server" ScriptMode="Release" EnableHistory="true" EnableSecureHistoryState="false" 
       EnablePageMethods="true" CombineScripts="false"> 
      <Scripts>     
       <asp:ScriptReference Path="~/ShowHelpPage.asmx" /> 

      </Scripts> 

     </cc1:ToolkitScriptManager> 

document.onkeydown = function(event){ 

      if(window.event && window.event.keyCode == 113) 
      { 
       window.open("HelpFile/index.html"); 

      } 
      else if(event.which == 113) 
      { 
       window.open("HelpFile/index.html"); 
       DisplayHelpFile(); 
      } 
     }  

     function DisplayHelpFile() 
     { 
      var i = PageMethods.DisplayHelpPage();// I think this is wrong 
      alert(i); 
     } 

Web方法

[WebService(Namespace = "http://tempuri.org/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    [ToolboxItem(false)] 

    [System.Web.Script.Services.ScriptService] 
    public class ShowHelpPage : System.Web.Services.WebService 
    { 

     [WebMethod] 
     public string DisplayHelpPage() 
     { 
      return "Window.Html";    

     } 
    } 

回答

1

「我的互聯網上閱讀,如果我想調用函數後面 代碼,然後我要創建一個Web服務,並從母版頁調用WebService的方法 」

我承擔您指的是方法而不是函數的上下文。您是否想在掌握頁面加載時調用方法?我認爲你不需要爲此創建一個Web服務?除非您希望客戶端通過Async發起請求,並且您正在使用JavaScript和AJAX發出請求。你想達到什麼目的?在我看來,這可以通過JavaScript來實現。如果你通過JavaScript調用一個頁面,它應該加載它自己?

下面實現你想要的,但只使用JavaScript。

 function keyHandler(e) 
    { 
     ... key handling script 
     if(myKey == 'F1') 
     { 
      window.location.href = '...';    
     } 
    } 
    document.onkeypress = keyHandler; 

如果您需要調用此Web服務並且需要從客戶端啓動它,那麼您可以使用JQuery來執行此操作。使用與ShowHelpPage.asmx相同的方法存儲處理和通過JavaScript處理的呈現。據我所知,這也消除了對ToolkitScriptManager的依賴。

function DisplayHelpFile()   
{ 
    $.ajax({ 
       type: "POST", 
       url: "ShowHelpPage.asmx/DisplayHelpPage", 
       data: "{}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success:function(result) 
       { 
        alert(result); 
       } 
     }, 
     error: ErrorMessage 
     }); 
     function ErrorMessage(result) 
     { 
     alert(result.status + ' ' + result.statusText + ' ' + result.responseText); 
     }  
}  
+1

感謝您的幫助。 – Vin05

+0

很高興幫助! – Jonathan

0

你的Web方法必須是靜態的。