使用 WebMethod 返回带有 Message 的警报框

Posted

技术标签:

【中文标题】使用 WebMethod 返回带有 Message 的警报框【英文标题】:Alert box by using WebMethod return with Message 【发布时间】:2019-08-29 06:01:55 【问题描述】:

我想在日期时间选择器上显示一个当所选日期与数据库日期匹配时的警报消息框

尽管 WebMethod 工作正常,但我现在的代码是每次选择时,总是会出现警报消息而无需检查。

Test.aspx.cs

    [System.Web.Services.WebMethod]
     public static string GetDateFromDB(DateTime compareDate)  
    
        string selectedDate = compareDate.ToString("yyyy/MM/dd");

        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LoginDBConnectionString1"].ConnectionString);
        SqlCommand com = new SqlCommand("SELECT * from Holiday where Date='" + selectedDate + "'", conn);
        SqlDataAdapter sqlDa = new SqlDataAdapter(com);
        DataTable dt = new DataTable();
        sqlDa.Fill(dt);

        if (dt == null || dt.Rows.Count == 0)
             return "NG";               
        else
            return "OK";
    

Test.aspx

      <link href="http://code.jquery.com/ui/1.9.2/themes/smoothness/jquery-ui.css" rel="stylesheet" />
                <input type='text' class='date' id="datepicker" autocomplete="off">
                <script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
                <script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
                <script>
                    jQuery(function ($) 

                        $("#datepicker").datepicker(
                            onSelect: function (dateText)                                     
                                alert("Selected date: " + dateText + "; input's current value: " + this.value);
                                $(this).change();
                                $.ajax(
                                    type: "POST",
                                    url: "Test.aspx/GetDateFromDB",
                                    data: ' "compareDate" : "' + dateText + '"',
                                    contentType: "application/json; charset=utf-8",
                                    dataType: "json",
                                    //success: OnSuccess,
                                    //failure: function (response) 
                                    //    alert(response.d);
                                    //
                                );
                            ,
                          
                        ).on("change", function () 
                            display("Got change event from field");
                        );

                    function display(msg) 
                        $("<p>").html(msg).appendTo(document.body);
                    

                    );
                </script>

【问题讨论】:

alert 应该在 success 函数中,而不是直接在 change 函数中。 【参考方案1】:

它总是发出警报,因为警报消息在 onChange 事件中。 您需要将其移至 AJAX 调用成功。 以下是您的编辑代码。

编辑:根据后面代码的返回值检查条件(即“OK”和“NG”)。

 <link href="http://code.jquery.com/ui/1.9.2/themes/smoothness/jquery-ui.css" rel="stylesheet" />
                <input type='text' class='date' id="datepicker" autocomplete="off">
                <script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
                <script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
                <script>
                    jQuery(function ($) 

                        $("#datepicker").datepicker(
                            onSelect: function (dateText)                                     
                                $(this).change();
                                $.ajax(
                                    type: "POST",
                                    url: "Test.aspx/GetDateFromDB",
                                    data: ' "compareDate" : "' + dateText + '"',
                                    contentType: "application/json; charset=utf-8",
                                    dataType: "json",
                                    success: function(data)
                                             
                                                 if(data == "OK")
                                                 
                                                     alert("Selected date: " + dateText + "; input's current value: " + this.value);
                                                                                               
                                             ,
                                    //failure: function (response) 
                                    //    alert(response.d);
                                    //
                                );
                            ,
                          
                        ).on("change", function () 
                            display("Got change event from field");
                        );

                    function display(msg) 
                        $("<p>").html(msg).appendTo(document.body);
                    

                    );
                </script>

注意:以上更改未经测试。如果它不起作用,请写评论。

【讨论】:

在成功下:函数我确实更改了这段代码,它工作得很好。感谢您的帮助和专业知识建议。 success: function (response) if (response.d == "OK") //alert("Selected date: " + dateText + "; input's current value: " + this.value); alert("今天是公共假期!!!" ); 如果它有帮助并且有效,则将其标记为答案。谢谢。

以上是关于使用 WebMethod 返回带有 Message 的警报框的主要内容,如果未能解决你的问题,请参考以下文章

带有 ASP.NET WebMethod 的 Jquery AJAX 返回整个页面

使用 jQuery AJAX“401(未经授权)”的 ASP.NET 调用 WebMethod

使用“WebMethod”调用 C# 方法返回“未定义”

使用 jQuery 调用 ASP.NET PageMethod/WebMethod - 返回整个页面

如何在 asp.net 中使用 JSON 和 JQuery 从 WebMethod 返回 DataTable?

ASP.NET使用WebMethod