0

我正在开发一个使用 javascript 和 ajax 进行所有数据查询和前端工作的网页,并且我正在尝试编写 excel 导出功能。看到在 javascript 中执行此操作的唯一方法似乎是使用仅在 IE 中可用的 ActiveXControl,我想将其作为 Sub 包含在我的网页后面的代码文件中。

这似乎是个好主意,但是每当我单击按钮时,页面就会返回,并且所有要导出的数据都消失了。如果我OnClientClick="return false;"在我的 asp:Button 中包含该按钮,则该按钮不会回发,但 Sub 也不会执行。有什么方法可以在这里完成我的目标而不必使用注册客户端脚本块?任何帮助是极大的赞赏。

谢谢!

- 编辑 -

对于方法调用,我在 $.ajax 上得到 404。这是相关的代码。

//server side
Partial Class Report
    Inherits System.Web.UI.Page

    <System.Web.Services.WebMethod()>
    Public Sub toXL()
        Response.Write("<br><br>Here<br><br>")
    End Sub
End Class

//client side
    function toExcel() {
        $.ajax({
            type: "POST",
            url: "/report.aspx/toXL",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                if (msg.error) {
                    alert(msg.error);
                }
                return false;
            }
        });
    }

//button
<asp:Button ID="MyButton" runat="server" AutoPostBack="false" type="button" OnClientClick="toExcel(); return false;" />
4

1 回答 1

2

您可以将方法描述为 WebMethod 并将其作为 Web 服务从 jquery ajax 调用。并在运行 ajax 调用后返回 false 。

<asp:button OnClientClick="DoAction();" id="myid" runat="server"/>


     public partial class _Default : Page 
        {
          [WebMethod]
          public static string MyMethod()
          {
    .......
          }
        }

function DoAction(){
    $.ajax({
      type: "POST",
      url: "PageName.aspx/MethodName",
      data: "{}",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function(msg) {
        if(msg.error){
    //show  error 
        }
    return false;
      }
    });
}
于 2012-09-24T17:54:40.040 回答