留言本项目,里的【删除留言】,用jquery来实现删除后无刷新更新留言列表,但我写的代码,有一点小问题,就是有的行,要点击两次,界面才出现这行被删除同时更新留言列表,不知道是哪里错了,还请指教,叩首致谢。下面是代码:
    [WebMethod]
    public System.Data.DataSet Delete(int id)
    {
        System.Data.SqlClient.SqlConnection sqlCon = new SqlConnection();
        sqlCon.ConnectionString = "server=.;uid=sa;pwd=sa;database=guestbook";
        //定义SQL语句
        string SqlStr = "delete from gbook where id=" + id;
        //实例化SqlDataAdapter对象
        SqlDataAdapter da = new SqlDataAdapter(SqlStr, sqlCon);
        DataSet ds = new DataSet();
        da.Fill(ds);
        return ds;
    }         <script type="text/javascript">
         var pageNo = 1; //当前页号
         var pageItems = 3; //每页显示的行数,这个数字与da.Fill(ds,pageNo,3,"gbook");里面的3保持一致
         var MaxPage = pageItems;         function showPage(m) {
             if (m == -1) {
                 if (pageNo < 2) {
                     alert("已经到了首页");
                     return;
                 };
                 MaxPage = pageItems;
             }
             else {
                 if (MaxPage < pageItems) {
                     alert("已经到了末页");
                     return;
                 };
             }
             pageNo += m;
             getData();
         }
         $(document).ready(function () {
             getData();
         });
         function getData() {
             $.ajax({
                 type: "POST",
                 cache: false,
                 url: "WebService.asmx/Select", /* 注意后面的名字对应CS的方法名称 */
                 data: { "pageNo": (pageNo - 1) * pageItems }, /* 注意参数的格式和名称 */
                 contentType: "application/x-www-form-urlencoded",
                 dataType: "xml",
                 error: function (result) {
                     alert(result.responseText);
                 },
                 success: function (data) {
                     MaxPage = $(data).find('gbook').size();
                     t = "<table border='1'>";
                     $(data).find('gbook').each(function (index, ele) {
                         var id = $(ele).find('id').text();
                         var title = $(ele).find('title').text();
                         var name = $(ele).find('name').text();
                         var time = $(ele).find('time').text();
                         var content = $(ele).find('content').text();
                         var reptime = $(ele).find('reptime').text();
                         var repcontent = $(ele).find('repcontent').text();
                         t += "<tr>";
                         t += "<td>" + id + "</td>";
                         t += "<td>" + title + "</td>";
                         t += "<td>" + name + "</td>";
                         t += "<td>" + time + "</td>";
                         t += "<td>" + content + "</td>";
                         t += "<td>" + reptime + "</td>";
                         t += "<td>" + repcontent + "</td>";
                         t += "<td> <input type=button value='删除留言' onclick='deleteData(" + id + ")'/></td><td><input type=button value='回复留言' onclick='replayData(" + id + ")'/></td>";
                         t += "</tr>";
                     })
                     t += "</table>";
                     t += "<div><a href='' onclick='showPage(-1);return false;'>上一页</a> <a href='' onclick='showPage(1);return false;'>下一页</a></div>"
                     $("#result").html(t);
                 }
             });
         }         function deleteData(id) {
             $.ajax({
                 type: "POST",
                 cache: false,
                 url: "WebService.asmx/Delete", /* 注意后面的名字对应CS的方法名称 */
                 data: { "id": id }, /* 注意参数的格式和名称 */
                 contentType: "application/x-www-form-urlencoded",
                 dataType: "text"             });             $(document).ready(function () {
                 getData();
             });
         }  </script>

解决方案 »

  1.   

     [WebMethod]
      public String Delete(int id)
      {
      System.Data.SqlClient.SqlConnection sqlCon = new SqlConnection();
      sqlCon.ConnectionString = "server=.;uid=sa;pwd=sa;database=guestbook";
      //定义SQL语句
      string SqlStr = "delete from gbook where id=" + id;
      //实例化SqlDataAdapter对象
      sqlCon.Open();
      SqlCommand cmd = new SqlCommand(SqlStr,sqlCon);
      int ret = cmd.ExecuteNonQuery();
      sqlCon.Close():
      if(ret > 0) return "删除成功";
      return "删除失败";
      }
      

  2.   

    还是依然存在问题,有的行依然要点击两次删除按钮才能在web页面上看到这行被删除,并且无刷新更新留言列表
      

  3.   

    本帖最后由 net_lover 于 2012-08-15 13:36:44 编辑
      

  4.   

    加上一个同步的属性为false试试。
      

  5.   

    async: false,加上这段代码试试
      

  6.   


    function deleteData(id) {
      $.ajax({
      type: "POST",
      cache: false,
      url: "WebService.asmx/Delete", /* 注意后面的名字对应CS的方法名称 */
      data: { "id": id }, /* 注意参数的格式和名称 */
      contentType: "application/x-www-form-urlencoded",
      dataType: "xml",
    success:function(data)
    {
    ret= $(data).text();
    //判断 ret 删除成功再决定是否刷新getData();
      getData();
    }  });