2012-05-21 16 views
8

Aramak için webmethod'umu içeren bir default.aspx.cs dosyasına sahibim ve jquery ajax'ımı yaratan js dosyam var. Webmethod'u arayamıyorum. İşte jquery ajax kullanarak webmethod ina aspx.cs dosyasını arama

benim Default.aspx.cs geçerli:

protected void Page_Load(object sender, EventArgs e) 
    { 
     string[] MyArray = new string[1]; 
     MyArray[0] = "My Value"; 

     Grid1D.DataSource = MyArray; 
     Grid1D.DataBind(); 
    } 

    [WebMethod] 
    public Details[] getDetails(string columnname, string inputVal) 
    { 
     List<Details> list = new List<Details>(); 

     DbAccess dbacc = new DbAccess(); 

     DataTable dt = dbacc.getReportDetails(columnname, inputVal); 

     foreach (DataRow row in dt.Rows) 
     { 
      Details _Details = new Details(); 
      _Details.memid = row["memid"].ToString(); 
      _Details.usrname = row["usrname"].ToString(); 
      _Details.fullname = row["fullname"].ToString(); 
      _Details.fname = row["fname"].ToString(); 
      _Details.mname = row["mname"].ToString(); 
      _Details.lname = row["lname"].ToString(); 
      _Details.bdate = row["bdate"].ToString(); 
      _Details.address = row["address"].ToString(); 
      _Details.sponsorid = row["sponsor_id"].ToString(); 
      _Details.parentid = row["parent_id"].ToString(); 
      _Details.placement = row["placement"].ToString(); 
      _Details.datejoined = row["date_joined"].ToString(); 


      list.Add(_Details); 
     } 

     Grid1D.DataSource = list.ToArray(); 
     Grid1D.DataBind(); 

     return list.ToArray(); 
    } 

Ve işte benim js dosyasıdır:

function retrieveReportData() { 
    var columnName = $("#ddlFilters").val(); 
    var input = $("#tags").val(); 

    if (columnName != "Select") { 

     var Data = JSON.stringify({ columnname: columnName, inputVal: input }); 

     alert(Data); 

     $.ajax({ 

      url: "Default.aspx/getDetails", 
      data: Data, 
      type: "POST", 
      dataType: "json", 
      contentType: "application/json; charset=utf-8", 
      success: function (mydata) { 

       alert(mydata.d); 
      } 
     }); 

    } 
    else 
     alert("Please choose search filter"); 
} 

Biliyorsun sahip olmasını sağlamak amacıyla verilerimi uyarı ediyorum fark edebilirsiniz webmethod'a göndermek için doğru değerler. Ama aynen söylediğim gibi, webmethodumu aramıyor ve ajax'ımdaki başarı fonksiyonuma devam etmiyor. Yardım et! Teşekkürler! :)

cevap

19

Sen webmethod static olması gerekir URL'deki parametreleri göndermek yerine Veri için ayarlayın.

[WebMethod] 
public static Details[] getDetails(string columnname, string inputVal) 
+0

Webmethod'uma statik koyduğumda bir hata var. Hata Statik olmayan alan, yöntem veya özellik için bir nesne başvurusu gereklidir 'SearchMember_Updated.Default.Grid1D' – ljpv14

+0

+1. @ ljpv14, Yani referans yok ... İlgili HTML sayfası olmadığından sizin durumunuzda web arayüzünde bazı UI güncellemek için hiçbir mantıklı değil. –

+1

Webmethod'da bir sunucu kontrolüne bağlanamazsınız. Veriyi sunucuya/sunucuya yüklemek/kaydetmek için kullanın. Korkarım ki bu mantığı değiştirmelisiniz –

1

deneyin type "Al" ve

url: "Default.aspx/getDetails/?colunmname="+colname+"&inputVal="+inputValue, 
type: "GET" 
+0

Üzgünüm ama ne dediğini anlamadım. – ljpv14

+0

Yani, URL'deki parametreleri iletmeli ve türü GET olarak ayarlamanız gerekir. Güncellenmiş answeer'ımı kontrol edin –

+0

Sonunda webmethodumu arayabiliyorum. Neden bir kesme noktası belirlediğim çizgide durmuyor? Webmethod'a ilerlemediği anlamına mı geliyor? – ljpv14