2012-04-12 92 views
5

是否有可能在不同的頁面上調用javascript中的[WebMethod]屬性?即利用腳本以下的jquery ajax調用名爲PageTwo.aspx頁:含在不同的頁面上從javascript調用頁面的webmethod

[WebMethod] 
    public string PageOneMethodOne() 
    { 
     return "hello world"; 
    } 
+0

我想\你可以只要你指定正確的url到它 – 2012-04-12 16:52:40

回答

8

這是可能的,只要你指定正確的URL

$.ajax(
     { 
      type: "POST", 
      url: "pageone.aspx/PageOneMethodOne", 
      data: "{}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(msg) 
        { 
         //something 
        } 
     } 
    ); 

PageOne.aspx.cs。看看下面的表格:

<form id="form1" runat="server"> 
<div> 
    <div id="messages"> 
    </div> 
    <input type="text" id="echo" /><input id="echoSubmit" value="Echo!" type="button"/> 
</div> 

和它相應的JavaScript:

<script type="text/javascript"> 
    $(function() { 
     $('#echoSubmit').click(function() { 
      var mes = $('#echo').val(); 
      var jsonText = JSON.stringify({ message: mes }); 

      $.ajax({ 
       type: "POST", 
       url: "SampleForm.aspx/SendMessage", 
       data: jsonText, 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (msg) { 
        $("#messages").append(msg.d); 
       } 
      }); 
     }); 
    }); 
</script> 

點擊echoSumbit按鈕將輸入框的內容發送到一個WebMethod上的另一個控件,SampleForm.aspx。下面是形式的代碼隱藏:

public partial class SampleForm : System.Web.UI.Page 
{ 
    [WebMethod] 
    public static string SendMessage(string message) 
    { 
     return message; 
    } 
} 

在Chat.aspx的點擊處理程序發送輸入值SampleForm.aspx.cs,它返回所發送的值。返回的值將附加到.ajax調用的成功方法中的Chat.aspx中的div上。

+0

謝謝@njebert,你能告訴我,頁面上的方法必須是靜態的嗎? – hofnarwillie 2012-04-12 18:03:34

+1

您可以使用.asmx代替代碼隱藏來調用非靜態方法 - http://stackoverflow.com/questions/1360253/call-non-static-method-in-server-sideaspx-cs-from -client側使用JavaScript的 – njebert 2012-04-12 18:50:04

相關問題