0

我想从服务器端更新客户端的标签,而该功能仍在服务器端执行。我怎样才能做到这一点?

这是代码片段:

protected void Button1_Click(object sender, EventArgs e)
        {
            string Result = "Success";
            if (Result == "Success")
            {
                Label1.Text = "Plan mst Completed";
                Thread.Sleep(2000);     //Some functionality here
                Label1.Text = "Packing date mst Started";
            }
            if (Result == "Success")
            {
                Label1.Text = "Packing date mst Completed";
                Thread.Sleep(2000);     //Some functionality here
                Label1.Text = "Etd mst Started";
            }

            if (Result == "Success")
            {

                Label1.Text = "Etd mst Completed";
                Thread.Sleep(2000);     //Some functionality here
                Label1.Text = "Inner box mst Started";

            }
        }

我希望 label1.text 中的所有更改都反映在客户端,而函数仍在执行中。请帮忙!!!

4

2 回答 2

1

从该方法内部与前端直接通信将很困难。这就是我的做法。

1) 将“Plan mst”、“Packing date mst”、“Etd mst”和“Inner box mst”拆分为4个独立的功能。

2) 让页面上的按钮单击事件触发一个 JavaScript 函数,通过 AJAX 依次点击 4 种方法中的每一种。为每个函数创建一个新的 ASPX 页面(“InnerBox.aspx”等)。如果你有 jquery,它看起来像这样:

        $("#SubmitButton").click(function () {
            DoPlanMst();
        });

        function DoPlanMst(argumentObj) {
            SetLabel("Plan MST Started");
            $.ajax({
                url: "PlanMst.aspx",
                type: "POST",
                data: argumentObj, // your post params
                success: function () {
                    SetLabel("Plan MST Completed");
                    DoPackingDateMst();
                }
            });
        }


        function DoPackingDateMst(argumentObj) {
            SetLabel("Packing Date MST Started");
            $.ajax({
                url: "PackingDate.aspx",
                type: "POST",
                data: argumentObj, // your post params
                success: function () {
                    SetLabel("Packing Date MST Completed");
                    DoEtdMst();
                }
            });
        }

        function DoEtdMst(argumentObj) {
            SetLabel("ETD MST Started");
            $.ajax({
                url: "EtdMst.aspx",
                type: "POST",
                data: argumentObj, // your post params
                success: function () {
                    SetLabel("ETD MST Completed");
                    DoInnerBoxMst();
                }
            });
        }

        function DoInnerBoxMst(argumentObj) {
            SetLabel("Inner Box MST Started");
            $.ajax({
                url: "InnerBoxMst.aspx",
                type: "POST",
                data: argumentObj, // your post params
                success: function () {
                    SetLabel("Inner Box MST Completed");
                }
            });
        }

        function SetLabel(message) {
            $("#Label1").val(message);
        }

如果您不想要 4 sep ASPX 页面,那很好。您可以将它们滚动到一个名为“ProcessMSTs.aspx”的文件中,该文件查找查询字符串参数以确定其代码中要调用的方法,同时仍传递 POST 参数。 编辑:修复了 AJAX 调用成功函数中函数名称中的拼写错误。

于 2012-10-04T12:36:36.210 回答
0

你是如何从浏览器调用这个函数的。它是一个异步调用,那么你可以在客户端自己管理它。如果它是同步的,那么它将不可能,因为您对您的请求的响应仍在等待中。

在 ajax 过程中使用这个 Jquery Ajax 后动画?

于 2012-10-04T11:46:51.290 回答