asp.net调用javascript返回值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net调用javascript返回值相关的知识,希望对你有一定的参考价值。

asp.net中写了一个javascript函数。
想得到返回值到服务器端控件textbox1

问:
1.如何在JavaScript访问C#函数?
2.如何在JavaScript访问C#变量?
3.如何在C#中访问JavaScript的已有变量?
4.如何在C#中访问JavaScript函数?

问题1答案如下:
javaScript函数中执行C#代码中的函数:
方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;
2、在前台写一个js函数,内容为document.getElementById("btn1").click();
3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;

方法二:1、函数声明为public
后台代码(把public改成protected也可以)
public string ss()

return("a");

2、在html里用 <%=fucntion()% >可以调用
前台脚本
<script language=javascript >
var a = " <%=ss()% >";
alert(a);
</script >
方法三:1、 <script language="javascript" >
<!--
function __doPostBack(eventTarget, eventArgument)

var theForm = document.Form1; //指runat=server的form
theForm.__EVENTTARGET.value = eventTarget;
theFrom.__EVENTARGUMENT.value = eventArgument;
theForm.submit();

-- >
</script >
<input id="Button1" type="button" name="Button1" value="按钮" onclick="javascript:__doPostBack( 'Button1 ', ' ')" >

方法四: <script language="javascript" >
function SubmitKeyClick()

if (event.keyCode == 13)

event.cancelBubble = true;
event.returnValue = false;
document.all.FunName.value="你要调用的函数名";
document.form[0].submit();


</script >

<INPUT onkeypress="SubmitKeyClick()" id="aaa" type="text" >
<input type="hidden" name="FunName" > 〈!--用来存储你要调用的函数 --〉

在.CS里有:
public Page_OnLoad()

if (!Page.IsPost())

string strFunName=Request.Form["FunName"]!=null?Request.Form["FunName"]:"";
//根据传回来的值决定调用哪个函数
switch(strFunName)

case "enter()":
enter() ; //调用该函数
break;
case "其他":
//调用其他函数
break;
default:
//调用默认函数
break;




public void enter()

//……比如计算某值


问题2.如何在JavaScript访问C#变量?
答案如下:
方法一:1、通过页面上隐藏域访问 <input id="xx" type="hidden" runat="server" >
方法二:1、如后台定义了PUBLIC STRING N;前台js中引用该变量的格式为 ' <%=n% > '或"+ <%=n% >+"
方法三:1、或者你可以在服务器端变量赋值后在页面注册一段脚本
" <script language= 'javascript ' >var temp=" + tmp + " </script >"
tmp是后台变量,然后js中可以直接访问temp获得值。

3.如何在C#中访问JavaScript的已有变量?

答案如下:

方法一:1、前台使用静态文本控件隐藏域,将js变量值写入其中;
2、后台用request["id"]来获取值;

方法二:可以用cookie或session

4.如何在C#中访问JavaScript函数?
答案如下:
c#代码中执行javaScript函数:
方法一:1、Page.RegisterStartupScript("ggg"," <script >SetVisible(1); </script >");
方法二:使用Literal类,然后
private void Button2_Click(object sender, System.EventArgs e)

string str;
str=" <script language= 'javascript ' >";
str+="selectRange()";
str+=" </script >";
//Literal1.Visible=true;
Literal1.Text=str;
参考技术A document.getElementById("textbox1").value ="你计算得到的值" 参考技术B 只有一个方法:提交,就是使用Post/Get来提交,或XmlHttp提交.将数据传到服务器.

从 ajax 调用到 javascript 日期的 ASP.NET 解析 DateTime 结果

【中文标题】从 ajax 调用到 javascript 日期的 ASP.NET 解析 DateTime 结果【英文标题】:ASP.NET Parse DateTime result from ajax call to javascript date 【发布时间】:2015-02-03 13:13:09 【问题描述】:

简介:

我的 ASP.NET 页面上有一个 WebMethod,它返回一个 Person 对象。 其中一个字段是Birthday,它是DateTime 属性。

WebMethod

[WebMethod]
public static Person GetPerson()

     Person p = new Person() 
         Id = 1,
         Name = "Test",
         Birthday = new DateTime(1988, 9, 13)
     ;

     return p;

如果我使用$.ajax() 进行调用,我会得到带有Person 对象的服务器响应。

Ajax 调用

// Class instance
var Ajaxcalls = function () 



_$.extend(Ajaxcalls, 
    GetPerson: function (label) 
        var self = label instanceof _$ ? label : $(label);

        _$.ajax(
            url: 'Default.aspx/GetPerson',
            type: "POST",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: function (data) 
                console.log(JSON.stringify(data.d));
                self.html(new Date(Date.parse(data.d.Birthday)));
            
        );
    
);

结果:

"__type":"AjaxTest.Classes.Person","Id":1,"Name":"Test","Birthday":"/Date(590104800000)/"

问题

如何将 Birthday [/Date(590104800000)/] 解析为 javascript/jQuery 日期? 我试过new Date(Date.parse(data.d.Birthday)),但它给了我一个Invalid date

【问题讨论】:

在你的 webmethod 中试试这个代码 Birthday = new DateTime(1988, 9, 13).ToLongDateString(); 生日是 DateTime 类型,所以我无法将其解析为字符串 关注blog @ArunPrasanth 就像一个魅力,如果你想为它发布答案! 【参考方案1】:

使用为您执行此操作的convertToJavaScriptDate() 函数:

function convertToJavaScriptDate(value) 
  var pattern = /Date\(([^)]+)\)/;
  var results = pattern.exec(value);
  var dt = new Date(parseFloat(results[1]));
  return (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear();

convertToJavaScriptDate() 函数接受\/Date(ticks)\/ 格式的值并返回MM/dd/yyyy 格式的日期字符串。 在内部,convertToJavaScriptDate() 函数使用表示模式/Date\(([^)]+)\)/ 的正则表达式。exec() 方法接受源日期值并测试该值是否匹配。 exec() 的返回值是一个数组。在这种情况下,结果数组的第二个元素 (results[1]) 包含源日期的刻度部分。

例如,如果源值为\/Date(836418600000)\/,则results[1] 将为836418600000。 基于这个刻度值形成一个 JavaScript Date 对象。 Date 对象有一个构造函数,它接受自 1970 年 1 月 1 日以来的毫秒数。 因此dt 拥有一个有效的 JavaScript Date 对象。 然后convertToJavaScriptDate() 函数将日期格式化为MM/dd/yyyy 并返回给调用者。

可以使用convertToJavaScriptDate()函数如下图:

options.success = function (order) 
 alert("Required Date : " + convertToJavaScriptDate(order.RequiredDate) + ", Shipped Date : " + convertToJavaScriptDate(order.ShippedDate));
;

虽然上面的例子使用MM/dd/yyyy格式的日期,但是一旦构造了Date对象,你也可以使用其他格式。

参考:Link

【讨论】:

这是包含时间的版本:function ToJavaScriptDateTime(value) var pattern = /Date\(([^)]+)\)/; var results = pattern.exec(value); var dt = new Date(parseFloat(results[1])); return dt.getHours() + ":" + dt.getMinutes() + " " + ('0' + dt.getDate()).slice(-2) + "." + ('0' + (dt.getMonth() + 1)).slice(-2) + "." + dt.getFullYear(); 我刚刚尝试了你的方法,我得到了一个错误 jQuery.Deferred 异常:无法读取 null 的属性 '1' 类型错误:无法读取 null 的属性 '1' 你能给我一个jsfiddle吗??【参考方案2】:

解决这个问题的另一种方法是在你的 person 类中创建一个新元素,然后使用它。示例

public class Person 
   public int Id get;set;
   public string Name get;set;
   public DateTime Birthday get;set;
   public string BirthdayFormat  get 
      return Birthday.toString("dd/MM/YYYY")
   

我认为这将是最好的方式,因为所有的格式都在一个地方,并且您可以在可能的情况下使用。 [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "0:dd/MM/YYYY")]

Birthday 元素上方,因此 displayFor 将使用正确的格式。

【讨论】:

【参考方案3】:

如果您愿意使用其他 JavaScript 库:

http://momentjs.com/docs/#/parsing/asp-net-json-date/

【讨论】:

这很好,如果您打算在 javascript 中使用日期/时间,即。一些操作【参考方案4】:

你可以试试这个:

   _$.ajax(
        url: 'Default.aspx/GetPerson',
        type: "POST",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (data) 
            console.log(JSON.stringify(data.d));
            var src = data.d.Birthday;
            //Remove all non-numeric (except the plus)
            src = src.replace(/[^0-9 +]/g, ''); 
            //Create date
            var birthDate = new Date(parseInt(src));
            self.html(birthDate);
        
    );

JSFiddle

【讨论】:

以上是关于asp.net调用javascript返回值的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 利用Ajax和Jquery在前台向后台传参数并返回值

调用 ASP.Net WebAPI 端点时,JavaScript 获取调用返回空字符串

Telerik RadWindow Javascript 向 ASP.NET 返回值

如何从用 asp.net 中的 scriptmanager.registerclientscript 编写的 javascript 确认框返回值?

ASP.NET / JavaScript - Ajax 调用,如何?

从 ajax 调用到 javascript 日期的 ASP.NET 解析 DateTime 结果