0

我在可视化 Web Gui 应用程序的皮肤文件中编写了一个 java 脚本函数,它也返回一些值。现在我正在从后面的代码中调用 java 脚本方法。

public void XYZ( string message)
    {
        this.InvokeMethodWithId("testCall", message);
    }

而javascript函数是:--

function testCall(strGuid, txt) {

    alert("hai Java script fired..");
    return txt+ 'returned from JavaScript';
}

我想要从应用程序中的 JavaScript 返回的值。我怎样才能实现它。是否有其他方法可以调用 JavaScript 的方法?

我想要这样的东西:--

public void Conect( string message)
        {
          string returnedvalue =  this.InvokeMethodWithId("testCall", message);
        }
4

2 回答 2

0

@阿米什库马尔,

正如其他回复已经指出的那样,客户端和服务器端在 Web 编程中没有直接连接。客户端永远是每个请求的发起者,服务端的“目的”是渲染一个响应,然后返回给客户端进行处理,在 Visual WebGui 中这通常是一些 UI 更新处理。这基本上意味着您的客户端脚本在服务器端完成呈现响应之前不会执行,并且客户端可以将一些消息返回给服务器的唯一方法是发出另一个请求。

例如,考虑一下您需要如何在 Visual WebGui 中使用 MessageBox。为了从 MessageBox 接收“响应”,您需要在您的服务器端代码中提供一个回调处理程序,然后您的服务器端代码将完成创建响应,该响应将返回给客户端。客户端更新它的 UI 并且对 MessageBox 对话框的某些操作,它向服务器发送一个新请求,服务器解释该操作并调用您的回调处理程序。在回调处理程序中,您使用 Form.DialogResult 来获取用户操作。

在自定义 Visual WebGui 代码中进行这项工作的一种非常基本的方法可能类似于表单上的以下代码:

    private void button1_Click(object sender, EventArgs e)
    {
        SendClientMessage("This is a test");
    }

    public void SendClientMessage(string strMessage)
    {
        System.Text.StringBuilder sb = new StringBuilder();
        sb.AppendLine("var objEvent = mobjApp.Events_CreateEvent('{0}', 'MessageEvent');");
        sb.AppendLine("mobjApp.Events_SetEventAttribute(objEvent, 'Msg', '{1}');");
        sb.AppendLine("mobjApp.Events_RaiseEvents();");

        this.InvokeScript(string.Format(sb.ToString(), this.ID, strMessage));
    }

    protected override void FireEvent(Gizmox.WebGUI.Common.Interfaces.IEvent objEvent)
    {
        if (objEvent.Type == "MessageEvent")
            MessageBox.Show(objEvent["Msg"]);
        else
            base.FireEvent(objEvent);

    }

除非您将 Visual WebGui 应用程序设置为无遮挡,否则此代码将不起作用。为了使此代码在隐藏的应用程序上运行,您需要将 JavaScript 添加为隐藏的 JavaScript 资源,它会正常工作。

帕利

enter code here
于 2012-09-27T20:09:30.157 回答
0

Javascript 在客户端执行,因此返回不会到达服务器。

一种解决方案可能是使用 AJAX 将该值发送到服务器。Stack Overflow 充满了关于 AJAX 的答案。

这是一个很好的例子

于 2012-09-26T17:51:04.173 回答