【问题标题】:YES/NO javascript function asking the question even tho it shouldn´t是/否 javascript 函数询问问题,即使它不应该
【发布时间】:2021-09-07 20:54:27
【问题描述】:

我有这个对服务器名称运行验证的插入表单,如果存在具有该名称的服务器,它应该触发 javascript 函数并说“该服务器已经存在,你想激活它?”是/否,如果是,它会做一件事,如果不是,它会做另一件事,当我对此进行试用时,我注意到即使没有具有该名称的服务器,它也会触发事件,但我还是把前端留在这里和服务器端代码,谢谢。

protected void btn_insert_server_Click1(object sender, EventArgs e)
    {
            
           DataAccess da = new DataAccess();
           DataTable dt = new DataTable();

        gridServers.DataSource = dt;
        gridServers.DataBind();

        string ServerName = ServerNameADD.Value.ToString();
           
              dt = da.VerifyServer(ServerName);

              if (dt.Rows.Count == 0)
              {
                da.Insert_Server(ServerName);
                dt = da.GetServers();
                gridServers.DataSource = dt;
                gridServers.DataBind();

                string message = "Servidor Inserido com sucesso.";
                string script = "window.onload = function(){ alert('";
                script += message;
                script += "')};";
                ClientScript.RegisterStartupScript(this.GetType(), "SuccessMessage", script, true);

              }
            else
            {
                string confirmValue = Request.Form["confirm_value"];
                if (confirmValue == "Sim")
                {
                    da.UpdateServerToActive(ServerName);
                    this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Servidor Ativado')", true);
                    da.GetServers();
                }
                else
                {
                    this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Status do servidor inalterado')", true);
                    da.GetServers();
                }
            }
    }

这是服务器端编码。

<asp:button Text="Insert" runat="server" OnClientClick="Confirm1()" name="txtInsertService" ID="btn_insert_service" OnClick="btn_insert_service_Click" ></asp:button>

这是触发服务器端编码的按钮,然后

function Confirm() {
        var confirm_value = document.createElement("INPUT");
        confirm_value.type = "hidden";
        confirm_value.name = "confirm_value";
        if (confirm("Este Servidor já existe,mas encontra-se desativado,deseja ativa-lo?")) {
            confirm_value.value = "Sim";
        } else {
            confirm_value.value = "Não";
        }
        document.forms[0].appendChild(confirm_value);
    }

这是它自己的javascript函数。 如果有人发现我做错了什么,请告诉我。

【问题讨论】:

  • 这里要澄清一件事。您正在触发 JavaScript 和服务器端事件 - OnClick="btn_insert_service_Click"。我相信,它应该只触发JavaScript 代码。尝试使用Ajax 呼叫。
  • @AT-2017 我需要他们两个来触发不?我想将插入运行到数据库中,但我还需要运行 javaScript 代码,因此如果存在作为名称已在数据库中的服务器,它会运行是否关于他是否要激活它的问题。但是,如果您知道一种无需我使用 OnClientClick 事件即可同时运行它们的 serverSide 方法,请告诉我。
  • 我可以看到,即使您尝试使用JavaScript 进行验证,服务器端事件也会运行。来自服务器端的消息或值不匹配,因为 JavaScript 代码与服务器端没有任何连接。您应该尝试以任何方式将值从服务器端返回到JavaScript。你明白我的意思了吗?
  • @AT-2017 哦,我现在明白了,所以它在没有答案的情况下运行是吗?如果可以,我该怎么办?
  • 在下面查看我的答案并检查链接。你会有一个想法。

标签: javascript asp.net webforms


【解决方案1】:

试试下面的方法:

后端 - 创建网络方法

[WebMethod(EnableSession = true)]
public static string GetServerSideValue()
{
    return "Done";
}

前端 - 使用以下 Ajax 调用服务器端 Web 方法

<button type="button" class="btn btn-primary" id="btnSubmit">Get Value</button>
$("#btnSubmit").click(function () {
        debugger;        

        $.ajax({
            type: "POST",
            url: "/YourFileName.aspx/GetServerSideValue", //Here you call the method
            data: JSON.stringify({ }),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                alert(data);
            },
            error: function (result) {
                alert("Error");
            }
        });
    });

N.B:请参阅此以获取正确的Ajax 呼叫 - Ajax Call with ASP.NET

【讨论】:

  • 你在这里说你调用的方法是什么意思?对不起,我不关注
  • 方法调用是服务端方法。您调用此方法并返回一个值以在JavaScript 代码中进行验证。在Ajax 调用的成功部分,您从该方法获取值(数据)并进行验证。这有帮助吗?
  • 我能够以另一种方式做到这一点,它只是激活服务器,因为如果他们正在创建一个具有该名称的服务器,我们可以直接激活它而无需提出任何问题,但您的回答很好并且给出了我对事物的不同看法将阅读一些 ajax 文档以更好地了解它
猜你喜欢
  • 1970-01-01
  • 2013-07-29
  • 2019-03-04
  • 1970-01-01
  • 2011-03-06
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
  • 2011-02-22
相关资源
最近更新 更多