Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从javascript调用代码隐藏方法?_C#_Javascript_Asp.net_Code Behind - Fatal编程技术网

C# 从javascript调用代码隐藏方法?

C# 从javascript调用代码隐藏方法?,c#,javascript,asp.net,code-behind,C#,Javascript,Asp.net,Code Behind,我在代码隐藏中使用了以下方法: protected void myMethod() { Literal1.Text = System.DateTime.Now.ToString(); } 我需要每秒调用这个方法。我发现我应该使用javascipt,下面是我的scipt: <script> function test() { // ??? } setInterval(test, 1000); </script>

我在代码隐藏中使用了以下方法:

protected void myMethod()
    {
        Literal1.Text = System.DateTime.Now.ToString();
    }
我需要每秒调用这个方法。我发现我应该使用javascipt,下面是我的scipt:

<script>
   function test() {
      // ???
   }
   setInterval(test, 1000);
</script>

功能测试(){
// ???
}
设定间隔(试验,1000);
但是我不知道如何从javascript调用myMethod?

使用AJAX。这将允许您从客户端调用指定的服务器端方法

从上面的链接:

function makeRequest(url) {
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
      httpRequest = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IE
      try {
        httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
      } 
      catch (e) {
        try {
          httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
        } 
        catch (e) {}
      }
    }

    if (!httpRequest) {
      alert('Giving up :( Cannot create an XMLHTTP instance');
      return false;
    }
    httpRequest.onreadystatechange = alertContents;
    httpRequest.open('GET', url);
    httpRequest.send();
  }

  function alertContents() {
    if (httpRequest.readyState === 4) {
      if (httpRequest.status === 200) {
        alert(httpRequest.responseText);
      } else {
        alert('There was a problem with the request.');
      }
    }
  }
})();
您必须使用
[WebMethod]
属性来修饰服务器端方法,并将其声明为public和static

从MSDN:

[System.Web.Services.WebMethod(EnableSession=true)]
public int GetNumberOfConversions()
{
   return (int) Session["Conversions"];
}
就这么简单


然而,我不得不质疑每秒从客户端到服务器调用一个方法。您可以单独用JavaScript处理日期事务。我敢打赌,往返旅行对你不太合适

如果您想避免服务器往返(可能是因为网络延迟),可以像这样使用javascript

var now = new Date();
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");// Saturday, June 9th, 2007, 5:46:21 PM

查看其他类型的日期格式是否可行。

往返,嗯,你是对的,这只是一个例子,在我的网站中,我的数据库中有endDate,我需要从数据库中获取此endDate,然后动态显示剩余时间(endDate-System.DateTime.Now)。我怎么做?嗯,好的。如果将时间值存储在数据库中,那么在服务器上进行检查可能会更好。在客户端做任何事情都会带来诸如处理时区等问题,如果需要比较自己的时间价值,这些问题可能会变得复杂。使用AJAX将是最好的选择。我建议你不要显示剩余的准确时间,而要做一些像“剩余2分钟”、“少于30秒”之类的事情,这样你就不需要100%准确的时间。我认为你的例子太简单了。如果您让我们知道您每秒钟都在呼叫什么,以及为什么我们可以针对您的情况提供更好的答案。@Hellfire我想他只是想知道如何从客户端到服务器的一般方法。我编辑了我的问题,以从我提供的链接中提取示例。看一看。