2012-01-23 7 views
5

Próbuję obsługiwać żądania AJAX za pomocą metody na mojej stronie .aspx. Z jakiegoś powodu nie otrzymuję danych, które chcę odzyskać. Czy ktoś może mi powiedzieć, co robię źle?Żądania usługi AJAX z webmethod na stronie ASPX

mypage.aspx:

<%@ Page Language="VB" Title="My Page" %> 
<%@ Import Namespace="System.Web.Services" %> 
<%@ Import Namespace="System.Collections.Generic" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<script runat="server"> 

    Protected Sub Page_Load(sender As Object, e As System.EventArgs) 

    End Sub 

    <WebMethod()> Public Function testmethod() As Integer 
     Return 5 
    End Function 

</script> 

<html> 
<!--...rest of page including mybutton and myresults--> 

JQuery:

$("#mybutton").click(function() { 
    $.ajax({ 
     type: "POST", 
     url: "mypage.aspx/testmethod", 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(msg) { 
     alert("success"); 
     $("#myresults").html(msg.d); 
     }, 
     error: function(msg) { 
     alert("error:" + JSON.stringify(msg)); 
     } 
    }); 
}); 

Kiedy klikam mybutton otrzymuję alert "Błąd:", a następnie całe mnóstwo HTML, który mówi:

Unknown web method testmethod. 
Parameter name: methodName 

Odpowiedz

12

Metoda musi być Shared:

<WebMethod()> Public Shared Function testmethod() As Integer 
    Return 5 
End Function 

Ponadto, nie jestem pewien, że metody stronę są obsługiwane, jeśli nie używać kodu źródłowego pliku.

+0

Dzięki, to rozwiązało problem. – Flash

+2

Aby dodać - W języku C# - musi to być "static" – Lijo

0

Co to jest błąd, który jest przekazywany? Powodem, dla którego widzisz całą stronę html, jest błąd w kodzie, a komunikat, który jest przekazywany, jest pełnym html, który mówi, gdzie jest błąd. Jestem pewien, że jeśli naprawisz błąd, wszystko będzie w porządku.

Nie jestem pewien, czy spodziewasz się zobaczyć komunikat o błędzie z kodu. Pamiętaj - wywołanie funkcji powodzenia lub błędu w sekcji Ajax jest wywoływane w zależności od tego, czy metoda usługi sieciowej została wywołana poprawnie, czy też nie. Myślę, że myślisz, że zobaczysz komunikat o błędzie z webmethod tutaj, ale w rzeczywistości, jeśli webmethod rzuci błąd, to nadal będziesz miał udane połączenie ajaxowe, a tym samym funkcja "success" będzie działać. Funkcja "błąd" będzie działać tylko wtedy, gdy całe wywołanie webmethod ulegnie awarii, więc nie ma odpowiedzi z serwera.

Mam nadzieję, że ma to sens.

+0

Dzięki temu zdałem sobie sprawę z tego, po tym jak napisałem, dodałem komunikat o błędzie na dole pytania. – Flash

Powiązane problemy