2012-04-12 20 views
5

¿Es posible llamar a un método atribuido con [WebMethod] desde javascript en una página diferente? Es decir. utilizando la siguiente jquery ajax llamada de secuencia de comandos en una página llamada PageTwo.aspx:Llamar al método web de una página desde javascript en una página diferente

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

PageOne.aspx.cs contienen

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

Creo que siempre que especifique la URL correcta –

Respuesta

8

Esto es posible, siempre y cuando se especifica la dirección URL correcta. Echa un vistazo a la siguiente forma:

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

y su correspondiente 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> 

Al hacer clic en el botón echoSumbit enviará el contenido de la caja de entrada a un WebMethod en otro control, SampleForm.aspx. Aquí está el código subyacente de esa forma:

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

El controlador de clic en Chat.aspx envía el valor de entrada a SampleForm.aspx.cs, que devuelve el valor enviado. El valor devuelto se agrega a un div en Chat.aspx en el método de éxito de la llamada .ajax.

+0

gracias @njebert, ¿podría decirme si el método de la página debe ser estático? – hofnarwillie

+1

Puede usar .asmx en lugar del código subyacente para llamar a un método no estático - http://stackoverflow.com/questions/1360253/call-non-static-method-in-server-sideaspx-cs-from -client-side-use-javascript – njebert

Cuestiones relacionadas