2012-05-21 29 views
8

का उपयोग कर webmethod ina aspx.cs फ़ाइल को कॉल करना मेरे पास एक डिफ़ॉल्ट.aspx.cs है जिसमें कॉल करने के लिए मेरा वेबमाइड है और मेरे पास मेरी जेएस फ़ाइल है जो मेरी jquery AJAX को दूषित करती है। मैं webmethod कॉल नहीं कर सकता। यहाँjquery AJAX

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

और मेरे js फ़ाइल है::

यहाँ मेरी default.aspx.cs है

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

आप देख सकते हैं कि मैं अपने डेटा को चेतावनी रहा हूँ सुनिश्चित करने के लिए मेरे पास है मेरे वेबमाइंड को भेजने के लिए सही मान। लेकिन जैसे मैंने कहा, यह मेरे वेबमाइड को कॉल करने में विफल रहता है और मेरे एजेक्स के भीतर मेरी सफलता समारोह में आगे बढ़ता नहीं है। मदद! धन्यवाद! :)

उत्तर

19

आप webmethod static होने की जरूरत है करने के लिए सेट करने के लिए।

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

जब मैं अपने वेबमाइड पर स्थिर डालता हूं तो एक त्रुटि होती है। त्रुटि गैर स्थैतिक फ़ील्ड, विधि या संपत्ति 'SearchMember_Updated.Default.Grid1D' – ljpv14

+0

+1 के लिए एक ऑब्जेक्ट संदर्भ आवश्यक है। @ ljpv14, तो इसका संदर्भ न दें ... आपके मामले में वेब विधि में कुछ यूआई अपडेट करने का कोई मतलब नहीं है क्योंकि कोई संबंधित HTML पृष्ठ नहीं है। –

+1

आप किसी वेबमाइड पर सर्वर नियंत्रण को बाध्य नहीं कर सकते हैं। सर्वर से डेटा को लोड/सहेजने के लिए इसका इस्तेमाल करें। मुझे डर है कि आपको उस तर्क को बदलने की आवश्यकता होगी –

1

कोशिश type "जाओ" और के बजाय URL में पैरामीटर भेज डाटा

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

क्षमा करें, लेकिन मुझे यह नहीं समझा कि आपने अभी क्या कहा है। – ljpv14

+0

मेरा मतलब है कि आपको यूआरएल में पैरामीटर पास करना चाहिए, और टाइप को जीईटी पर सेट करना चाहिए। कृपया मेरे अपडेट किए गए answeer –

+0

देखें, अंततः मैं अपना वेबमाइम कॉल करने में सक्षम हूं। यह उस रेखा पर क्यों नहीं रुक रहा है जहां मैंने ब्रेकपॉइंट सेट किया था? क्या इसका मतलब है कि यह वेबमाइंड पर नहीं जा रहा है? – ljpv14

3

यह एक पूरी तरह से नमूना है, जो कैसे एक सर्वर साइड asp.net पृष्ठ का उपयोग कर ajax अनुरोध के माध्यम से "webmethod" कॉल करने के लिए के अंत में जब तक शुरुआत में पूरी प्रक्रिया से पता चलता है।

http://www.codeproject.com/Questions/374136/Call-Page-Method-From-Jquery-Ajax-Call