2012-04-12 4 views
5

Ist es möglich, eine Methode, die mit [WebMethod] zugewiesen wurde, über Javascript auf einer anderen Seite aufzurufen? I.e. mit dem folgende Jquery Ajax-Aufruf von Skript auf einer Seite PageTwo.aspx genannt:Aufruf der Webmethode einer Seite aus JavaScript auf einer anderen Seite

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

PageOne.aspx.cs

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

Ich denke, Sie können, solange Sie die richtige URL angeben –

Antwort

8

Dies ist möglich, enthalten, solange Sie die richtige URL angeben. Überprüfen Sie das folgende Formular aus:

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

und es entspricht 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> 

die echoSumbit Schaltfläche klicken, wird der Inhalt des Eingabefeldes zu einem WebMethod auf einem anderen Steuerelement, SampleForm.aspx senden. Hier ist der Code-behind dieser Form:

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

Der Click-Handler in Chat.aspx sendet den Eingangswert zu SampleForm.aspx.cs, der den gesendeten Wert zurückgibt. Der zurückgegebene Wert wird an ein Div in Chat.aspx in der Erfolgsmethode des .ajax Aufrufs angefügt.

+0

danke @njebert, können Sie mir sagen, muss die Methode auf der Seite statisch sein? – hofnarwillie

+1

Sie können eine .asmx anstelle der Code-Behind verwenden, um eine nicht-statische Methode aufzurufen - http://stackoverflow.com/questions/1360253/call-non-static-method-in-server-sideaspx-cs-from -Client-Side-Use-Javascript – njebert

Verwandte Themen