在asp.net?

时间:2016-12-31 08:44:28

标签: javascript c# jquery asp.net

我编写了一个调用c#方法的jQuery函数。

如果函数返回成功,则它从c#代码调用另一个方法,该代码负责在c#类中递增计数器变量。

我想每1分钟做一次自动计数器增量,这就是我注意到的。我在我的c#类的Counter()函数中设置了一个断点。当页面加载并且调用Counter方法时,我继续进行调试并注意事情正常但是一旦计数器变量达到值" 2",当我按F10进入我的Counter方法时(),它没有到达方法的末尾并将计数器变量递增2,然后从这里开始变得更糟。

我想知道我能做错什么?任何人都可以查看我的脚本,并就可能导致错误的原因向我提出建议吗?

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Dtata.aspx.cs" Inherits="Dtata" %>
  <!DOCTYPE html>

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head runat="server">
    <title></title>
    <script src="/scripts/jquery-3.1.1.min.js"></script>

  </head>

  <body>
    <form id="form1" runat="server">
      <div>
      </div>
      <script type="text/javascript">
        klm();

        function klm() {
          $.ajax({
            type: "POST",
            url: "Dtata.aspx/Hello",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: "{ 'name' : 'hello' }",
            success: function(result) {
              console.log(result.d);
              Counter() //<-- CALL OTHER AJAX METHOD TO INCREASE COUNTER ON BACK END
            },
            error: function(result) {
              alert(result.responseText);
            }
          });
        }


        function Counter() {
          $.ajax({
            type: "POST",
            url: "Dtata.aspx/Counter",
            contentType: "application/json; charset=utf-8",
            dataType: "json",

            success: function(result) {
              console.log(result.d);
            },
            error: function(result) {
              alert(result.responseText);
            }
          });
          setInterval(Counter, 60000);


        }
      </script>



    </form>


  </body>
  </html
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Dtata: System.Web.UI.Page {
  public static int counter = 0;

  protected void Page_Load(object sender, EventArgs e) {


  }

  [WebMethod]
  public static string Hello(string name) {
    return name;
  }

  [WebMethod]
  public static int Counter() {
    counter = counter + 1;
    Console.WriteLine("I have been called" + counter);

    return counter;
  }
}

1 个答案:

答案 0 :(得分:0)

一件事。你可以用klm和setInterval来调用counter。

如果你想循环一个AJAX函数,那就这样做:

function Counter() {
  $.ajax({
    type: "POST",
    url: "Dtata.aspx/Counter",
    contentType: "application/json; charset=utf-8",
    dataType: "json",

    success: function(result) {
      console.log(result.d);
      setTimeout(Counter,60000); // call again if ok - or in .done
    },
    error: function(result) {
      alert(result.responseText);
    }
  });
}

另一件事 - 我希望您的C#读取和写入数据库的计数器,我不会看到C#返回任何带有{ d:counter}的JSON