簡體   English   中英

為什么我的按鈕單擊多次執行?

[英]Why does my button click execute multiple times?

我已經編寫了此Ajax代碼以將數據發送到Web服務asmx。 它可以工作,但是只需單擊一下,它就可以多次插入數據,有時需要2,3次單擊才能插入數據。

.js

 <script type="text/javascript">

            function save()
            {
                $("button").click
                (
                     function()
                     {
                        $.post
                        (
                            "http://localhost:82/ws/himher.asmx/InsertUsers",
                            {name: txtUserName.value, pwd: txtUserPwd.value},
//                          
                        );

                     }
                );
            }



        </script>
    </head>
<body> 
    <div class="container-fluid">
        <div class="row">
            <div class="col-md-12">
                 <label>User Name</label>
                 <input id="txtUserName" type="text" class="form-control" />
            </div>
        </div>
        <div class="row">
            <div class="col-md-12">
                 <label>Password</label>
                 <input id="txtUserPwd" type="text" class="form-control" />
            </div>
        </div>    
        <br/>
         <div class="row">
            <div class="col-md-12">     
                 <button type="submit" onclick='save()' class="btn btn-primary pull-right">Register</button>
            </div>
        </div>    
    </div>

.cs:

public class himher : System.Web.Services.WebService
{

    [WebMethod(EnableSession = true)]
    //[ScriptMethod(UseHttpGet = false)]
    public string InsertUsers(string name, string pwd)
    {
        try
        {
            basicoperation bop = new basicoperation();
            return bop.insertUsers(name, pwd);
        }
        catch (Exception ex)
        {

            throw ex;
        }


    }


    public string insertUsers(string Name, string Password)
    {
            string status;

            String ConStr = ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString;

            SqlConnection sqlCon = new SqlConnection(ConStr);    // to make a connection with DB 

            SqlCommand sqlCom = new SqlCommand("InsertUsers", sqlCon); // now in order to perform action such as insert SP, we must create command object which needs command name and conncetion only

            sqlCom.CommandType = CommandType.StoredProcedure;  // you must tell the system that insertInfo is a storedprocedure 

            SqlParameter sqlParamName = new SqlParameter("@UserName", Name);
            SqlParameter sqlParamPwd= new SqlParameter("@Password", Password);

            sqlCom.Parameters.Add(sqlParamName);
            sqlCom.Parameters.Add(sqlParamPwd);      

            try
            {
                sqlCon.Open();

               int i= sqlCom.ExecuteNonQuery();   // executenonquery is used for INSERT, UPDATE, DELETE 

                //sqlCom.ExecuteScalar();   // used to pick or read a single value from procedure
               // Response.Write("Done");

                sqlCon.Close();

                status= "Success";
            }
            catch (Exception ex)
            {
                //response.Write(ex.Message);
                status = ex.Message;
            }
        return status;
    }
}

您有兩個保存功能的綁定,當您單擊按鈕時,其中一個已綁定。 像這樣重寫您的JS:

<script type="text/javascript">
    function save()
    {
        $.post(
            "http://localhost:82/ws/himher.asmx/InsertUsers",
            {name: txtUserName.value, pwd: txtUserPwd.value}
        );
    }
</script>

這樣,您的save功能將保存邏輯。 通過<button type="submit" onclick='save()'>在HTML中進行綁定以調用此函數。

如果要向用戶發布此代碼,則確實需要實施一些重復的操作預防措施,而不是希望他們單擊​​一次即可。 因此,雖然您可能會發現為什么它會插入倍數,但是您不能依靠用戶的行為將垃圾內容排除在數據庫之外。 他們會慢下來並挫敗該按鈕。 即使您禁用該按鈕,它們也會刷新並再次提交。 在插入之前對數據進行重復數據刪除-這是多層信息安全性; 即使他們禁用了停止敲擊按鈕的腳本,您也不接受重復的

請注意,我不提供此解決方案作為正版“我單擊一次並插入3個數據”的解決方案-可以解決該錯誤,但可以在服務器內部(根據您對數據純度的要求)控制用戶行為您完全可以控制)

為什么我的

[英]Why is my <i> tag being appended multiple times for each click as I click the add button?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM