简体   繁体   English

如何在c#中获取代码背后的javascript值

[英]How to get javascript values on code behind in c#

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. 我需要在c#中获取代码背后的javascript值。我知道我可以使用隐藏字段,但页面上没有用于回发的服务器控件。请告诉我如何在代码中获取代码。

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. 您可以看到没有服务器控件,所以我如何在代码后面获取NAME,UID变量。

Thanks 谢谢

You can use a hiddenfield server control assign the values you need to it in javascript and assess it on server side. 您可以使用hiddenfield服务器控件在javascript中为其分配所需的值,并在服务器端对其进行评估。 If you do not want post back then you can use jQuery ajax to send values. 如果您不想回发,那么您可以使用jQuery ajax发送值。

Html HTML

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

Javascript 使用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 . 使用jQuery ajax和web方法向后面的代码发送值,你可以在这里找到很好的教程。

$.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
}

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: 我将调查ASP.NET AJAX页面方法的使用,因为它们允许生活在.aspx页面中的脚本可调用独立Web服务,如下所示:

Page Method in your code-behind file (call it default.aspx for discussion's sake): 代码隐藏文件中的页面方法(为讨论起见,将其命名为default.aspx):

[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: jQuery调用default.aspx的SaveData方法:

$.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. 注意:ASP.NET AJAX页面方法自动将其响应编码为JSON因此您不会在代码隐藏或任何序列化逻辑中看到任何JSON序列化。

For more information about ASP.NET AJAX Page Methods check out Using jQuery to directly call ASP.NET AJAX page methods 有关ASP.NET AJAX页面方法的更多信息,请查看使用jQuery直接调用ASP.NET AJAX页面方法

You can use following method: 您可以使用以下方法:

<script language="javascript" type="text/javascript">
    function returnString() {
        var val = 'sampleValue';
        return val;
    }
</script>

C# Code to get the return value of the above function: C#代码获取上述函数的返回值:

ClientScript.RegisterClientScriptBlock(this.GetType(), "alertScript", "<script language="javascript">var a=returnString();alert(a);</script>");

Or simply as Adil said, can use hidden field and assign value: 或者像Adil所说,可以使用隐藏字段并赋值:

<asp:HiddenField ID="hField" Value="0" runat="server" />
        <asp:Button ID="Button1" runat="server"  OnClientClick="returnString();"
            Text="Button" onclick="Button1_Click" />

script for assigning value: 分配值的脚本:

<script language="javascript" type="text/javascript">
       function returnString() {
           debugger;
           document.getElementById("hField").value = "sampleValue";
       }
   </script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM