1

在这里,我需要先调用一个 javascript 函数,一段时间后,我需要在同一个按钮单击事件上调用 ac# 函数。是否可以?

 <asp:ImageButton ID="imgBTNExportPPT" runat="server" Width="15" Height="15" border="0" 
 OnClientClick="JavaScript:exportCharts('JPG');" OnClick="imgBTNExportPPT_Click" ImageUrl="~/Images/PPT_icon.png" />

有什么建议吗?

4

3 回答 3

2

Javascript函数在客户端执行。C# 函数在服务器端执行。如果没有进一步的临时化或异步请求,客户端 onClick 处理函数将在服务器端 onClick 处理函数之前执行。

如果我明白了,您要导出的图像在客户端处理后可用,不是吗?因此,只有在客户端处理完成后才执行服务器端处理。

没有 AJAX?看看这里

这是一些代码:

<script>
  function exportCharts(input)
  {
    //business here
    if(business works)
      return true;
    else
      return false;
  }

</script>

  <asp:ImageButton ID="imgBTNExportPPT" runat="server" Width="15" Height="15" border="0"  ImageUrl="~/Images/PPT_icon.png"
    OnClientClick="return exportCharts('JPG');"
    OnClick="imgBTNExportPPT_Click" />

仅当 exportCharts 返回 true 时,才会执行服务器端 imgBTNExportPPT_Click 处理程序。

于 2012-06-27T08:36:36.383 回答
1

为什么不通过 Ajax 调用来调用服务器端方法

你可以把它放在你的 JavaScript 方法的末尾

于 2012-06-27T08:12:47.713 回答
1

如果“一段时间后”您的意思是“必须在 3 秒后执行一个动作”,那么您可以使用setTimeout setTimeout(functionToCallAfterIntervalToWait, intervalToWait)

如果您想调用服务器端方法,您可以在 functionToCallAfterIntervalToWait 中使用 ajax 调用 - 如果您需要有关 ajax 调用的帮助,请发表评论

有关如何从 javascript 调用您的 asp.net 服务器方法的示例,请参阅博文(google call asp .net server method from javascript for more examples/tutorials)

假设您正在使用 jQuery,您将编写(使用.ajax()):

$.ajax( { 
url:"yourAspxPage/NameofTheMethodToCall", 
data: {"nameOfParameter": valueOfParameter}, 
success: function (data) {
//this function will be called after the server side function executes successfuly
});

如果您希望在其他客户端操作之后进行此函数调用,请确保在其他命令下方(之后)编写。

于 2012-06-27T08:18:24.120 回答