【问题标题】:Call asp.net function with out button click from java script directly with out page refresh直接从 javascript 调用 asp.net 函数而无需单击按钮而无需刷新页面
【发布时间】:2015-12-22 10:05:04
【问题描述】:

我正在尝试检查数据库中是否存在运行完美但我想要的是特定值

  1. 我想从 JavaScript 调用 C# 函数
  2. 现在在我的代码中 JavaScript 单击按钮后它会响应但 页面也会刷新我不希望页面刷新发生
  3. 在不使用 javascript 按钮的情况下调用 C# 函数的更好方法

    protected void Check_exam_id(object sender, EventArgs e)
    {         
        string DDSelected_Class = DD_class.SelectedValue;// store it in some variable;
        string DD__Method = DD_Method.SelectedValue;// store it in some variable;
    
        if (DD__Method == "THEORY")
    
            {
        using (MySqlConnection myConnection = new MySqlConnection(constr))
        {
            string oString = "Select * from score_master WHERE Class=@DDSelected_Class ";
            MySqlCommand oCmd = new MySqlCommand(oString, myConnection);
            oCmd.Parameters.AddWithValue("@DDSelected_Class", DDSelected_Class);
    
            myConnection.Open();
            using (MySqlDataReader oReader = oCmd.ExecuteReader())
            {
    
                if (oReader == null || !oReader.HasRows)
                {
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "alert", "alert('No Student Found')", true);
    
    
                }
                else
                {
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "alert2", "alert('Exist')", true);
    
                    myConnection.Close();
                }
            }
    
        }
    
    
        }
    
    }
    

asp 按钮

 <asp:Button runat="server" id="Check_examid"  AutoPostback = "false" onclick='Check_exam_id'   style="  display:none;   float: right;    width: 22%;    height: 41px;    text-align: center;    background: #EAEAEA;    border: none;    border-color: #EAEAEA;    margin-top: 2%;" Text="Submit"></asp:Button>

Javascript

    document.getElementById("BodyHolder_Check_examid").click()

【问题讨论】:

  • 使用 jquery ajax 对您的方法进行 ajax 调用。
  • @RahulSingh 我不确定如果你给我一个更有帮助的例子

标签: javascript c# jquery asp.net


【解决方案1】:

正如评论中提到的,您可以使用 jquery ajax 轻松完成。为此,您必须定义一个类似这样的 WebMethod:-

请包含using System.Web.Services;

[WebMethod]
public static bool Check_exam_id(string className, string MethodName)
{
    bool examIdExist = false;
    if (DD__Method == "THEORY")
    {
        \\Your logic here
    }
    \\Based on DB operation return value
    examIdExist 
}

最后像这样从您的客户端调用它:-

$("#Check_examid").click(function (e) {
    e.preventDefault(); //To avoid postback
    //Get these values from dropdwon
    var className = $("#DD_class").val();
    var methodName = $("#DD_Method").val();
    var data = { "className": className , "MethodName": methodName };  
    $.ajax({
        type: "POST",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        url: "Default.aspx/Check_exam_id",
        data: JSON.stringify(data),
        success: function (response) {
            if(response.d)  //If method returned true.
               alert('Exist');
            else
               alert('No Student Found')
        },
        error: function (msg) { alert(msg.d); }
    });
});

另外,包括 jquery 基础库文件。

【讨论】:

  • 感谢[WebMethod]的回复有一个错误,它说名称空间WebMethod不存在
  • @Shaik - 请在您的文件中包含using System.Web.Services;
  • 我做的很好我有一个简短的问题字符串className 如果我使用它,那么它会显示一个错误
  • @Shaik - 什么错误?您是否将下拉列表中的值作为参数传递,如我所示?
  • 从下拉列表中传递,Check_exam_id 给我错误并非所有代码路径都返回值字符串,字符串,字符串,字符串,
【解决方案2】:

将其作为 webmethod 并使用 ajax 从 jquery 调用该方法。 请找到以下链接,它包含使用 jquery ajax 在 asp.net 中调用 webmethods 的示例。 http://www.aspsnippets.com/Articles/Calling-ASPNet-WebMethod-using-jQuery-AJAX.aspx

希望这会有所帮助!

【讨论】:

    【解决方案3】:

    使用 Jquery ajax 方法或使用 UpdatePanels

    将您的方法 Check_exam_id 创建为公共静态并将其装饰为 [WebMethod] 并像调用任何其他函数一样在按钮的单击事件上调用 javascript 函数。

        function DoWork(){
         $.ajax({
              url: 'YourPage.aspx/Check_exam_id',
              data: {}, //blank since you are sending nothing
              dataType:'JSON',
              type: 'POST',
              contentType:'application/json;charset=utf-8',
              success:function(){
              alert('Success');
              //Do whatever you want with the HTML
              },
             error:function()
             {
              alert('Error');
                }
             });
            }
    

    【讨论】:

      【解决方案4】:
      $("#Check_examid").click(function (e) {
          e.preventDefault(); //To avoid postback
          //Get these values from dropdwon
          var className = $("#DD_class").val();
          var methodName = $("#DD_Method").val();
          var data = { "className": className , "MethodName": methodName };  
          $.ajax({
              type: "POST",
              dataType: "json",
              contentType: "application/json; charset=utf-8",
              url: "Default.aspx/Check_exam_id",
              data: JSON.stringify(data),
              success: function (response) {
                  if(response!=null)  //If method returned true.
                     alert('Exist');
      $("DivId").html(response.d)
                  else
                     alert('No Student Found')
              },
              error: function (msg) { alert(msg.d); }
          });
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-12
        • 2022-12-17
        • 1970-01-01
        • 2014-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多