Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从客户端JavaScript函数调用代码隐藏服务器方法?_C#_Javascript_.net_Asp.net - Fatal编程技术网

C# 如何从客户端JavaScript函数调用代码隐藏服务器方法?

C# 如何从客户端JavaScript函数调用代码隐藏服务器方法?,c#,javascript,.net,asp.net,C#,Javascript,.net,Asp.net,我在ASPX页面中有一个HTML按钮点击事件的JavaScript函数。以及在其代码隐藏页中的服务器方法。现在,我只想在用户单击HTML按钮时使用一些参数从JavaScript函数调用服务器方法 回复时,请不要更改此方案,也不要在aspx页面中使用任何asp.net控件。因为只允许使用HTML控件。有人能帮我吗?。提前谢谢。急切地等待答案 这是密码 标记中的代码: <script language="javascript" type="text/javascript"> fu

我在ASPX页面中有一个HTML按钮点击事件的JavaScript函数。以及在其代码隐藏页中的服务器方法。现在,我只想在用户单击HTML按钮时使用一些参数从JavaScript函数调用服务器方法

回复时,请不要更改此方案,也不要在aspx页面中使用任何asp.net控件。因为只允许使用HTML控件。有人能帮我吗?。提前谢谢。急切地等待答案

这是密码

标记中的代码:

<script language="javascript" type="text/javascript">
    function btnAccept_onclick() {        
        var name;            
        name = document.getElementById('txtName').value;

        // Call Server side method SetName() by passing this parameter 'name'
</script>

<input type="button" id="btnAccept" value="Accept" onclick="return btnAccept_onclick()" />

如果您不想使用ajax,那么

Code behind 

void myBtn_Click(Object sender,EventArgs e)
{
   //SetName(name); your code
}


.aspx file

<script language="javascript" type="text/javascript">
    function btnAccept_onclick() {        
        var name;            
        name = document.getElementById('txtName').value;
        document.getElementById('callserver').click();
        // Call Server side method SetName() by passing this parameter 'name'
</script>


<div style="dispaly:none;">
  <input type="button" id="callserver" value="Accept" click="myBtn_Click" runat="server" />
</div>
<input type="button" id="btnAccept" value="Accept" onclick="return btnAccept_onclick()" />
代码隐藏
void myBtn_单击(对象发送方,事件参数e)
{
//SetName(name);您的代码
}
.aspx文件
函数btnacept_onclick(){
变量名;
name=document.getElementById('txtName')。值;
document.getElementById('callserver')。单击();
//通过传递此参数“name”调用服务器端方法SetName()
或者使用页面方法

.cs file
[ScriptMethod, WebMethod]

   public static string docall()
   {
      return "Hello";
   }

.aspx file

<script type="text/javascript">
      function btnAccept_onclic() {
          PageMethods.docall(onSuccess, onFailure);
      }

  function onSuccess(result) {
          alert(result);
      }


      function onFailure(error) {
          alert(error);
      } 

</script>
.cs文件
[脚本方法,WebMethod]
公共静态字符串docall()
{
回复“你好”;
}
.aspx文件
函数btnacept_onclic(){
PageMethods.docall(onSuccess,onFailure);
}
函数onSuccess(结果){
警报(结果);
}
功能失效(错误){
警报(错误);
} 

选中此项:

是的,您可以创建一个web方法,如

[WebMethod]
public static String SetName(string name)
{
    return "Your String"
}
然后用JavaScript调用它

PageMethods.SetName(parameterValueIfAny, onSuccessMethod,onFailMethod);
这也是必需的:

<asp:ScriptManager ID="ScriptMgr" runat="server" EnablePageMethods="true"></asp:ScriptManager>

Ajax是一条可行之路。最简单(可能也是最好)的方法是

你最终会写这样的东西:

$.ajax({
  url: "test.html",
  context: document.body,
  success: function(){
    // do something when done
  }
});

尝试创建一个新服务并调用它。处理可以在那里完成,然后返回

函数makeCall(操作){
var n1=document.getElementById(“num1”).value;
var n2=document.getElementById(“num2”).value;
如果(n1和n2){
//实例化服务代理
var proxy=新服务();
//在vf cproxy上调用正确的操作
开关(操作){
案例“gridOne”:
代理计算(AjaxService.Operation.getWeather,n1,n2,
onSuccess、onFail、null);
****HTML代码****
主要城市:

国家:


我必须把我的按钮注册为后扣触发器

RegisterPostbackTrigger(idOfButton)

在我的项目中,我们通常这样调用服务器端方法:

$.ajax({
  url: "test.html",
  context: document.body,
  success: function(){
    // do something when done
  }
});
在JavaScript中:

document.getElementById("UploadButton").click();
服务器端控制:

<asp:Button runat="server" ID="UploadButton" Text="" style="display:none;" OnClick="UploadButton_Click" />

在我看来,user1965719提出的解决方案非常优雅。在我的项目中,所有进入包含div的对象都是动态创建的,因此添加额外的隐藏按钮非常简单:

aspx代码:

JS代码:

<script type="text/javascript">
         function ShowCurrentTime(name) {
         PageMethods.GetCurrentTime(name, OnSuccess);
         }
         function OnSuccess(response, userContext, methodName) {
          alert(response);
         }
</script>

感谢您的快速响应,但不要使用任何带有runat=“server”的控件(asp.net或HTML)在aspx页面中添加标记。同时尽可能避免使用ajax。第二种方法没有任何服务器标记,但您需要使用使用ajaxHi的pagemethod。如果我的项目有一个单击方法,这很好。我在两个不同的asp按钮中有两个js函数和两个不同的onclick方法。一个方法可以调用,但另一个不调用。这是怎么回事可能?在调试过程中,我遇到了以下错误:
JavaScript运行时错误:无法获取未定义或空引用的属性“click”
。该按钮位于我的aspx文件上,并且在其背后的代码中定义了附加的事件处理程序。有什么想法吗?@sab669,使用他的方法,您将面临一个小问题,其中ClientID不是与服务器ID相同。添加额外的属性
ClientIDMode=“Static”
,使客户端ID和服务器ID相同。启用PageMethods时是否存在安全问题?我想知道为什么默认情况下会禁用它。
<asp:Button runat="server" ID="UploadButton" Text="" style="display:none;" OnClick="UploadButton_Click" />
protected void Upload_Click(object sender, EventArgs e)
{

}
    <asp:Button runat="server" id="btnResponse1" Text="" 
    style="display: none; width:100%; height:100%"
    OnClick="btnResponses_Clicked" />

    <div class="circlebuttontext" id="calendarButtonText">Calendar</div>
</div>    
protected void btnResponses_Clicked(object sender, EventArgs e)
{
    if(sender == btnResponse1)
    {
        //Your code behind logic for that button goes here
    }
}
<script type="text/javascript">
         function ShowCurrentTime(name) {
         PageMethods.GetCurrentTime(name, OnSuccess);
         }
         function OnSuccess(response, userContext, methodName) {
          alert(response);
         }
</script>
<asp:ImageButton ID="IMGBTN001" runat="server" ImageUrl="Images/ico/labaniat.png"
class="img-responsive em-img-lazy" OnClientClick="ShowCurrentTime('01')" />
[System.Web.Services.WebMethod]
public static string GetCurrentTime(string name)
{
    return "Hello " + name + Environment.NewLine + "The Current Time is: "
            + DateTime.Now.ToString();
}