1

我需要从 ajax 方法后面的 c# 代码调用一个 javascript 函数(CommentButtonShow())。我无法做到这一点。

以下是 C# ajax 方法,

[AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
public string CheckPassword()
{
  ScriptManager.RegisterClientScriptBlock(this, GetType(), "ScriptManager1", "javascript:CommentButtonShow();", true);
}

下面是javascript函数,

    function CommentButtonShow() {
        $("#ctl00_mainContentPlaceHolder_divEmailFriends").removeClass('hidden').addClass('show'); 
    }

请帮帮我。

谢谢。

4

3 回答 3

1

您可以CommentButtonShow()在 ajax 调用成功事件内的 javascript 中调用函数。您不能在 Web 方法中调用 javascript 函数。如果它是回发,您的代码将起作用,但对于 ajax 回调它不会起作用。

于 2012-04-17T08:28:59.227 回答
0

我正在回答这个问题,以便为那些不熟悉这种 cilent 端和服务器端脚本的人提供更多信息,并在对他们做一些有趣的工作时混淆:)

这绝对不可能从 C#(服务器端)代码中调用 Javascript(客户端)函数。我的意思是,即使你真的不能用地球上的任何编程语言将 javascript 调用回服务器端代码!

这很简单。服务器端代码呈现客户端代码。由于客户端代码(html/javascript)驻留在浏览器中,因此您没有任何 javascripts 挂钩,至少可以在服务器端获取它然后调用。但是对于 Asp.Net 为您提供了一个实际上将客户端 HTML 控件(大多数 HTML 标记)转换为服务器端控件(如 .net 框架支持)的钩子,然后您可以访问它们的属性和一些仅在服务器调用的方法-边。这并不意味着您有 javascript 事件等。无论您对这些服务器端控件做什么,都只会在服务器端发生,并且在该控件的最终代码发送到浏览器进行渲染之前,所有相关内容都已完成。这就是为什么当呈现此类控件的 html 时,您会看到一个典型的基于 .net 的 ID 生成,它看起来像 _ctr01 等。

无论如何,使用 Ajax(在客户端),您仍然可以使用 Ajax.Net 和/或 Ajaxpro (ajaxpro.info) 或自定义 javascript lib (jquery) 调用服务器端方法。

我希望这只会有助于理解你在做什么实际上是不可能的。我仍然不会将您的问题评为负面,因为它确实会帮助许多新来者了解事情是如何运作的,以及经历过这个问题的人是如何做到正确的。

我希望它非常公平地使用这个论坛来提供帮助每个人而不是否定他们的观点而不让他们知道他们在问/回答是对/错的信息。

非常感谢。

于 2012-10-11T15:51:12.260 回答
0

我们可以从 JQuery AJAX 调用中调用代码隐藏中的方法,并根据状态是错误还是成功,将执行相应的方法。

   function MyMethod() {
    $.ajax({
    type: "POST",
    url: "CodeBehind.aspx/ClearData",
    contentType: "application/json;charset=utf-8",
    data: '',
    dataType: "json",
    success: function (data, textStatus) {
        closePopUpwindow1();
    },
    error: function (data, textStatus) {
        closePopUpwindow2();
    }
});}

    [WebMethod]
   public static void ClearData(){
 Page.SetGridSessionData(gridID, null);
}

如果服务器端方法成功执行,则执行 closePopUpwindow1 方法,否则将执行 closePopUpwindow2 方法。

于 2014-03-24T06:36:47.653 回答