2016-12-31 5 views
0

私はc#メソッドを呼び出すjQuery関数を書いています。asp.netの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

一つ。 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#はDBにカウンターを読み書きするために期待すると私は任意のC#のリターンが表示されていないがJSON with a { d:counter}

関連する問題