如何在c#中获取代码背后的javascript值
我需要在c#中获取代码背后的javascript值。我知道我可以使用隐藏字段,但页面上没有用于回发的服务器控件。请告诉我如何在代码中获取vales。
这是我的代码:
Facebook Get Logged in User Details UserName,Email,Profile Image // 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_TPNewTitlesStatus_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(); }); }); } Facebook Login Authentication Example
Login
你可以看到没有服务器控件,所以我如何在代码后面获取NAME,UID变量。
谢谢
我将调查ASP.NET AJAX页面方法的使用,因为它们允许生活在.aspx
页面中的脚本可调用独立Web服务,如下所示:
代码隐藏文件中的页面方法(为讨论起见,将其命名为default.aspx):
[WebMethod] public static string SaveData(string name, string uid) { // Logic here to do what you want with name and uid values (ie save to database, call another service, etc.) }
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. } });
注意:ASP.NET AJAX页面方法自动将其响应编码为JSON
因此您不会在代码隐藏或任何序列化逻辑中看到任何JSON
序列化。
有关ASP.NET AJAX页面方法的更多信息,请查看使用jQuery直接调用ASP.NET AJAX页面方法
您可以使用hiddenfield服务器控件在javascript中为其分配所需的值,并在服务器端对其进行评估。 如果您不想回发,那么您可以使用jQuery ajax发送值。
HTML
使用Javascript
document.getElementById('ValueHiddenField').value = "yourValue";
代码背后
string yourValue = ValueHiddenField.Value;
使用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. } });
代码背后
[WebMethod] public static void YourMethod(string yourParam) { //your code goes here }
您可以使用以下方法:
C#代码获取上述函数的返回值:
ClientScript.RegisterClientScriptBlock(this.GetType(), "alertScript", "");
或者像Adil所说,可以使用隐藏字段并赋值:
分配值的脚本: