如何防止在连续时间段内显示重复信息

时间:2014-02-16 07:08:10

标签: javascript jquery asp.net

我写了一个方法(带有WebMethod属性),它给出了我的书籍列表:

 public struct BOOK
    {

        public string BOOK_NAME;
        public string BOOK_DESC;          
    }

    [WebMethod]
    public static List<BOOK> GetMyBooks()
    {


        string _connString = "Data Source=.;Initial Catalog=BookStore;Integrated Security=True";
        SqlConnection _conn = new SqlConnection(_connString);
        _conn.Open();
        SqlCommand _com = new SqlCommand("select * from Book_TBL where IsActive='True' ", _conn);
        _com.CommandType = System.Data.CommandType.Text;
        SqlDataAdapter bookdataAdapter = new SqlDataAdapter(_com);

        DataSet bookDS = new DataSet();
        bookdataAdapter.Fill(bookDS, "Book_TBL");
        List<BOOK> bookList = new List<BOOK>();

        BOOK book;
        foreach (DataRow dr in bookDS.Tables["Book_TBL"].Rows)
        {
            book = new BOOK();
            book.BOOK_NAME = dr["book_name"].ToString();
            book.BOOK_DESC = dr["book_desc"].ToString();

            bookList.Add(book);

        }
        return bookList;
    }

我编写了一个脚本,每隔5秒调用一次“GetMyBooks”方法,然后在我的WebForm2.aspx中用id:“pejiGrid”在div标签中显示:

<script>
     $(document).ready(function () {
         $("#go").click(function () {
             setInterval(function () {
                     $.ajax({
                     type: "POST",
                     url: "WebForm2.aspx/GetMyBooks",
                     data: '{}',
                     contentType: "application/json; charset=utf-8",
                     dataType: "json",
                     success: function (response) {
                         for (var i = 0; i < response.d.length; i++) {
                             $("#pejiGrid").append("<tr><td>" + response.d[i].BOOK_NAME + "</td><td>" + response.d[i].BOOK_DESC + "</td></tr>");
                         }
                     }, });
             }, 5000); 
         });

     });

但我的方法和脚本在我的“#pejiGrid”中附加了重复的信息,我想只显示一次这个信息,有什么办法,我可以通过脚本来做到这一点吗?如果不可能,解决方案是什么?

1 个答案:

答案 0 :(得分:1)

代码中的所有内容都可以。你的脚本只需要一个小的修正。用以下代码替换成功函数体:

var htm = [];

for(var i = 0; i&lt; response.d.length; i ++){     htm.push(“”+ response.d [i] .BOOK_NAME +“”+ response.d [i] .BOOK_DESC +“”); }

$( “#pejiGrid”)HTML(htm.join( ''));

如果我正确地理解了问题,那就是使用jQuery的'append'方法,它附加了从服务器收到的所有新数据。而不是你需要用新的数据替换旧数据。所以你需要使用'html'方法来替换div的内容。

还有一条建议。最好将“GetMyBooks()”等方法存储在专门为此目的开发的Web服务文件中。

祝你一切顺利!