Calling Web Method Which Takes Object as an Input Parameter Using AJAX & JavaScript



Step 1: Create a class with a few properties, such as:

public class Customers
    {
        private int _intCustomerID;
        private string _strFirstName;
        private string _strAddress;
        private string _strDesignation;
        public int CustomerID{
            get{
                return _intCustomerID;
            }
            set{
                _intCustomerID = value;
            }
        }
        public string FirstName{
            get{
                return _strFirstName;
            }
            set{
                _strFirstName = value;
            }
        }
        public string Address{
            get{
                return _strAddress;
            }
            set{
                _strAddress = value;
            }
        }
        public string Designation{
            get{
                return _strDesignation;
            }
            set{
                _strDesignation = value;
            }
        }


Step 2: Add a web service and the ScriptService Attribute to the service.

Step 3: Include a web method which takes an object as an input parameter as in:

[WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
     [System.Web.Script.Services.ScriptService]
    public class Customer : System.Web.Services.WebService
    {
        [WebMethod]
        public string TestMethod(Customers cust)
        {
            return "Hi " + cust.FirstName + " you are living in " + cust.Address + " and your desc is " + cust.Designation;
        }
    }

Step 4: Create an aspx page and include a ScriptManager.

Step 5: Add a Services tag and asp:ServiceReference and in the path give the webservice url:

        <asp:ScriptManager ID="ScriptManager1" runat="server">
            <Services>
                <asp:ServiceReference Path="~/Customer.asmx" />
            </Services>
        </asp:ScriptManager>


Step 6: Create a JavaScript function to call the webmethod.

Step 7: Create a JavaScript object manually which is similar to a C# class:

        var cust = new Object();
        cust.CustomerID = 1;
        cust.FirstName = "Shyam";
        cust.Address = "Live in India";
        cust.Designation = "Software Developer";



Step 8: webmethod with the delegate with the following parameters:

  • First input parameters
  • Second function to be bind the values
  • Third function handles error
  • Last function handles timeout

function callwebservicewithobj()
      {
            var cust = new Object();
        cust.CustomerID = 1;
        cust.FirstName = "Shyam";
        cust.Address = "Live in India";
        cust.Designation = "Software Developer";

        // CALLINGWEBMETHODUSINGAJAX is name space of webservice
        // Customer = webservices name.
             CALLINGWEBMETHODUSINGAJAX.Customer.TestMethod(cust, BindData, ErrorHandler, TimeOutHandler);
        }


Step 9: Create a JavaScript bind function

function BindData (varResult)
        {
            alert(varResult);
        }

Step 10: Create a JavaScript ErrorHandler function:

function ErrorHandler(result)
        {
            var msg = result.get_exceptionType() + "\r\n";
            msg += result.get_message() + "\r\n";
            msg += result.get_stackTrace();
            alert(msg);
        }


Step 11: Create JavaScript TimeOutHandler function:

        function TimeOutHandler(result)
        {
            alert("Timeout :" + result);
        }

Step 12: Create a link in aspx which calls the js function:

<a href="javascript:callwebservicewithobj();">Call webservices with input parameters</a>

Similar Articles