How to get javascript values on code behind in c#

20,624

Solution 1

I would investigate the use of ASP.NET AJAX Page Methods, because they allow for script callable stand-alone web services that live in an .aspx page, like this:

Page Method in your code-behind file (call it default.aspx for discussion's sake):

[WebMethod]
public static string SaveData(string name, string uid)
{
    // Logic here to do what you want with name and uid values (i.e. save to database, call another service, etc.)
}

jQuery call to default.aspx's SaveData method:

$.ajax({
    type: "POST",
    url: "default.aspx/SaveData",
    data: "{'name':'John', 'uid':'ABC123'}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
        // Do something interesting here.
    }
});

Notes: ASP.NET AJAX Page Methods automatically encode their response to JSON so you will not see any JSON serialization in the code-behind or any serialization logic at all.

For more information about ASP.NET AJAX Page Methods check out Using jQuery to directly call ASP.NET AJAX page methods

Solution 2

You can use a hiddenfield server control assign the values you need to it in javascript and assess it on server side. If you do not want post back then you can use jQuery ajax to send values.

Html

<asp:hiddenfield id="ValueHiddenField" runat="server"/>

Javascript

document.getElementById('ValueHiddenField').value = "yourValue";

Code behind

string yourValue = ValueHiddenField.Value;

Using jQuery ajax and web method to send values to code behind, you can find nice tutorial over here.

$.ajax({
  type: "POST",
  url: "PageName.aspx/MethodName",
  data: {'yourParam': '123'},
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(msg) {
    // Do something interesting here.
  }
});

Code behind

[WebMethod]
public static void YourMethod(string yourParam)
{
   //your code goes here
}
Share:
20,624
sikha
Author by

sikha

Updated on January 02, 2020

Comments

  • sikha
    sikha over 4 years

    I need to get javascript values on code behind in c#.I know i can use hidden field but there is no server control on page for postback.Please tell me how can get vales in code behind.

    Here is my code:

    <html>
    <head>
    <title>Facebook Get Logged in User Details UserName,Email,Profile Image</title>
        <script src="jquery-1.6.2.min.js" type="text/javascript"></script>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
    </head>
    <body>
    <script>
        // Load the SDK Asynchronously
    
    
    
        (function (d) {
            var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
            if (d.getElementById(id)) { return; }
            js = d.createElement('script'); js.id = id; js.async = true;
            js.src = "//connect.facebook.net/en_US/all.js";
            ref.parentNode.insertBefore(js, ref);
        } (document));
    
        // Init the SDK upon load
        window.fbAsyncInit = function () {
            FB.init({
                appId: 'APPID', // App ID
                channelUrl: '//' + window.location.hostname + '/channel', // Path to your Channel File
                status: true, // check login status
                cookie: true, // enable cookies to allow the server to access the session
                xfbml: true  // parse XFBML
            });
    
            // listen for and handle auth.statusChange events
            FB.Event.subscribe('auth.statusChange', function (response) {
                if (response.authResponse) {
                    // user has auth'd your app and is logged into Facebook
                    var uid = "http://graph.facebook.com/" + response.authResponse.userID + "/picture";
                    FB.api('/me', function (me) {
                        document.getElementById('auth-displayname').innerHTML = me.name;
                        document.getElementById('myJSString').value = me.name;
    
                        alert(document.getElementById('myJSString').value);
    
                        document.getElementById('Email').innerHTML = me.email;
                        document.getElementById('profileImg').src = uid;
    
                        //  document.getElementById('ctl00_CPHDefault_tcTPS_TPProd_ctl01_tcProduction_TPNewT‌​itlesStatus_ChangedRowsIndicesHiddenField').value = uid;
                       // alert('yyy');
    
                    })
                    document.getElementById('auth-loggedout').style.display = 'none';
                    document.getElementById('auth-loggedin').style.display = 'block';
                } else {
                    // user has not auth'd your app, or is not logged into Facebook
                    document.getElementById('auth-loggedout').style.display = 'block';
                    document.getElementById('auth-loggedin').style.display = 'none';
                }
            });
            $("#auth-logoutlink").click(function () { FB.logout(function () { window.location.reload(); }); });
        }
    
    
    
    
    
    </script>
    <h1>
    Facebook Login Authentication Example</h1>
    <div id="auth-status">
    <div id="auth-loggedout">
    <div id="Result"  class="fb-login-button" autologoutlink="true" scope="email,user_checkins">Login</div>
    </div>
    <div id="auth-loggedin" style="display: none">
    Name: <b><span id="auth-displayname"></span></b>(<a href="#" id="auth-logoutlink">logout</a>)<br />
    Email: <b><span id="Email"></span></b><br />
    Profile Image: <img id="profileImg" />
    
    <form runat="server">
    <asp:HiddenField runat="server" id="myJSString" />
    
    </form>
    </div>
    </div>
    </body>
    </html>
    

    You can see there is no server control so how i can get NAME,UID variables in code behind.

    Thanks