【问题标题】:Running JavaScript in page from the backend (AJAX)?从后端(AJAX)在页面中运行 JavaScript?
【发布时间】:2013-01-31 14:37:54
【问题描述】:

我刚开始将 JavaScript 集成到网站中,但我的网站中经常需要它。

这是一个例子: 假设我有这个功能:

showAlert()

说我有:

<div id="some_div">

</div>

谁能给我一些可以做到这一点的例子: 如果我有一个按钮并且用户单击它,这应该在后端引发一个事件并在我的 C# 文件中调用一些方法。然后我的 C# 文件应该能够调用前端的一些其他 javascript 方法,该方法将调用 showAlert() 并在 div 中显示警报。

这是我似乎无法找到任何信息。

将信息传入和传出服务器的基本思想。对此的任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 您可能想开始阅读的是 Ajax。否则,这太宽泛了,无法在这里正确回答。
  • 回调函数还不够吗?就像 jQuery.ajax 的成功回调一样。
  • 你能给我一个链接或教程吗?
  • 还要注意后端永远不能“在前端调用一个javascript方法”,你所能做的就是从前端到后端执行ajax调用并处理返回的任何内容.
  • @PeterHerdenborg 很好,这对于理解前端异步技术的工作原理至关重要。您必须疏远 Webforms 的心态,并习惯于在客户端调用和处理您的调用。

标签: c# javascript asp.net


【解决方案1】:

最好的办法是使用像 jquery 这样的框架,然后绑定到按钮,调用服务并处理响应。下面是一个简单的例子。

$(document).ready(function()
    $('#Button1').bind('click', function () { 
        // This grabs the page you are in so that you can call it correctly
        var pagePath = window.location.pathname;  
        var testId = $("#some_div").val();
        var url = pagePath + "/TestService";          
        $.post(url, { id: testId },
            function (data) {
                showAlert(data);
            }
        });
    };
});

首先,您需要确保文档在某个时候准备就绪。 Bind 允许在文档加载时绑定按钮。然后,通过单击它,您将执行获取 testId、调用您的服务并在成功回调中处理数据响应的匿名函数。

希望这能让你朝着正确的方向开始!

编辑:添加后端网络表单“服务”曝光

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e) 
    {

    }

    [WebMethod]
    public static string TestService(string id) 
    {
        var string = DBCollection.FirstOrDefault(x => x.id == id); // Or whatever you want to return the data
        return "You called me on " + DateTime.Now.ToString() + "with " + string;
    }
}

这将允许您调用“在您的页面上公开的WebMethod。有关此方面的更多帮助,请参阅以下链接。

http://www.tugberkugurlu.com/archive/asp-net-web-forms---calling-web-service-page-methods-using-jquery

编辑:在网络表单中执行此类方法时的其他注意事项。 Calling a webmethod with jquery in asp.net webforms

【讨论】:

  • 您能否也展示一下它在后端部分的工作方式?另外,我的网站不是 MVC。
  • @Milo 你的后端是什么?网络表格?您是否有任何服务端点暴露?
  • 是的,它是网络表单。公共部分类 WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } } }
  • 谢谢,但现在我只是想知道,我是否应该将整个应用程序放在一个单例中?如何获取页面名称等信息?访问实例变量的正确方法是什么?
  • @Milo pageName 将由 javascript 提取。它会查看您当前所在的页面以确定位置。至于你的其他问题,我认为这是一个全新的架构问题
猜你喜欢
  • 2011-10-08
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-26
  • 2013-03-28
  • 1970-01-01
相关资源
最近更新 更多