2012-01-23 26 views
5

AJAX isteklerine .aspx sayfamdaki bir yöntemle hizmet vermeye çalışıyorum. Bir sebepten dolayı istediğim veriyi geri alamıyorum. Bana yanlış ne yaptığımı söyleyen var mı?Hizmet ASP.NET sayfasında ASP.NET ile istekleri

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: diyor ve HTML ardından sürü:

Unknown web method testmethod. 
Parameter name: methodName 
:

$("#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)); 
     } 
    }); 
}); 

Ben bir uyarı "hata" olsun mybutton tıklayın

cevap

12

yöntem Shared olması gerekiyor:

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

Ayrıca, dosyaya arkasındaki kodu-a kullanmadığınızda o sayfa yöntemleri desteklenir emin değilim.

+0

Teşekkürler, bu sorunu çözdü. – Flash

+2

Eklemek - C# - 'statik' olması gerekir – Lijo

0

Geri iletilmekte olan hata nedir? Tüm html sayfasını görmenizin nedeni, kodda bir hatanın olması ve geri iletilmekte olan msg'nin, hatanın nerede olduğunu söyleyen tam html olmasıdır. Eminim hatayı düzeltirseniz, o zaman iyi olur.

Hata mesajını codebehind'den görmeyi beklediğinizden emin değilim. Unutmayın - Ajax bölümünde çağrılan başarı veya hata işlevleri, web servisinin başarılı bir şekilde mi çağrıldığına bağlı olarak çağrılır. Sanırım hata mesajını webmethod'dan görebileceğinizi düşünüyorsunuz, fakat gerçekte, eğer webmethod hatayı atarsa, o zaman başarılı bir ajax çağrısına sahip olursunuz ve böylece "başarı" fonksiyonu koşan kişi olur. "Hata" fonksiyonu sadece tüm webmethod çağrısı başarısız olduğunda çalışır, böylece sunucudan yanıt alınmaz.

Bunun mantıklı olmasını umuyorum.

+0

Teşekkürler. Bunu iletdikten sonra anladım, sorunun alt kısmına hata mesajını ekledim. – Flash