我编写了一个调用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;
}
}
答案 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