【问题标题】:WCF Service methods + Synchronous calls from javascriptWCF 服务方法 + 来自 javascript 的同步调用
【发布时间】:2011-01-05 12:00:04
【问题描述】:

我已经编写了一个 WCF 服务,并试图在我的 ASPX 页面的脚本中调用服务方法。

例如:

<script language="javascript" type="text/javascript">

<!--

        function Test() {
          **// The following call is an Async call.  
          tempuri.org.IService.GetData(1,OnRequestComplete, OnError, "");**
        }

        function OnRequestComplete(result, state) {
            var textBox = $get("txtInput");
            textBox.value = result;

        }
        function OnError(result) {
            var textBox = $get("txtInput");
            textBox.value = result;
        }

    //-->    
</script>

我想要的是能够“同步”调用服务方法

例如:var result = tempuri.org.IService.GetData(1);

这可能吗?

【问题讨论】:

    标签: javascript ajax wcf service


    【解决方案1】:

    我相信在 Javascript 中无法进行同步调用 - AJAX 库在等待远程响应时总是会返回。

    你能解释一下为什么要这样做吗?

    编辑:

    作为回答,你应该使用这个方法:

    • 在表单提交按钮的 onclick 事件处理程序中:进行 Web 服务验证调用,并立即返回 false(因此表单不会提交)。 向用户显示“验证”类型的消息是个好主意,这样他们就知道这里发生了什么。

    • 如果您得到有效响应,则使用document.form.submit(); 将表单提交到服务器。

    • 如果您收到无效响应或服务器错误,则向用户显示一条相关消息。

    【讨论】:

    • 我想为自定义验证器编写自定义 javascript 函数,并且自定义脚本应该“同步”调用我的 wcf 服务。如果调用是异步的,则页面回发并且对 wcf 的请求不会完成!
    • 那么你应该看看另一种方法。首先进行此验证,然后根据结果提交表单。
    • 验证的逻辑在我的服务中 :) 所以页面应该等到我的服务返回验证结果。
    • 阐明了您在我的回答中应该使用的方法。
    【解决方案2】:

    如果您使用常规 AJAX,您可以使您的调用同步。

    见:http://www.w3schools.com/Ajax/ajax_xmlhttprequest_send.asp 并向下滚动到“异步 - 对还是错?”部分

    我在这里使用 AJAX,但有时会挂起 www.DomainGuarder.com

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      相关资源
      最近更新 更多