Showing posts with label AJAX. Show all posts
Showing posts with label AJAX. Show all posts

call Server Side function from Client Side Code in ASP.NET

Some times we require to call server side method from client side. Here it is done using script manager.

<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" >
</asp:ScriptManager>

<script type="text/javascript">
function callServer()
{
alert($get('txtNo').value);
// call server side method
//Server side function get the 1 arguments i. We are passing $get('txtNo').value
//for that. CallSuccess is callback function for complete successfully.
//CallFailed is callback function on error. $get('divDest') is destCtrl parameter.
//If server side code executed successfully then CallSuccess will call.
//If server side code do not executed successfully then CallFailed will call.
PageMethods.ServerMethod($get('txtNo').value, CallSuccess, CallFailed, $get('divDest'));
}

// set the destination textbox value with the ContactName
function CallSuccess(res, destCtrl)
{
destCtrl.innerHTML = res;
}

// alert message on some failure
function CallFailed(res, destCtrl)
{
alert(res.get_message());
}
</script>
<input type="text" id="txtNo" />
<input type="button" id="test" value="Test" onclick="callServer();" />
<div id="divDest">
</div>



In .cs file

<WebMethod()> _
Public Shared Function ServerMethod(ByVal i As Integer) As String
If (i = 0) Then
Return "This is Zero"
Else
Return "This is " & i
End If
End Function


Troubleshooting: ‘PageMethods Is 'Undefined'’ error

1. Try setting EnablePageMethods="true" in the script manager tag
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"/>
2. Don't add the javascript references or code in the <head /> section. Add it to the <body> tag.

<body>
<script type="text/javascript" language="javascript" src="script.js"> </script>
<form id="form1" runat="server">
</form>
</body>

3. Page methods needs to be static in code behind.