Ajax-启用 WCF 服务:了解 Javascript 调用函数时的参数

Ajax-Enabled WCF service : understanding Javascript parameters when calling a function

我正在玩弄 msdn 网站上的 Ajax-Enabled WCF services. So far I've managed to create and consume my service with a small client application. However while reading the "How-to" 页面,我遇到了这段代码:

function Button1_onclick() {
    var service = new SandwichServices.CostService();
    service.CostOfSandwiches(3, onSuccess, null, null);
}

function onSuccess(result) {
    alert(result);
}

并且在调用该函数时我无法理解(甚至无法找到相关信息)null, null 参数。 3 是您要传递给服务函数的参数,onSuccess 是在成功回调时调用的函数,但是那两个空参数是什么?

它们是成功、错误和useContext 的回调。您可以在 "Accessing WCF web services" 部分阅读更多内容 here

最后两个参数分别指onFailureUsercontext下面提到的问题。

service.CostOfSandwiches(3, onSuccess, null, null);

OnFailure : 顾名思义,如果 ajax 由于网络问题、服务器错误、超时等原因导致调用失败,将调用此处作为参数传递的函数。

UserContext:一般所有ajax调用(我的意思是这个[WCFAjax]太依赖ajax调用)都使用这个参数。因为,有一个调用 $.ajax 的主要方法,在您的情况下它是 Button1_onclick。所以到目前为止,所有定义的变量在回调中都不可用(成功或失败),因为这些在 ajax 调用完成时被回调,但是为了让那些调用知道先前定义的变量,上下文选项用于传递他们。

示例:

function Button1_onclick() {
    var service = new SandwichServices.CostService();
    var some_var = "someval"; // on successcallback if you are trying to access this, it will show error.
    service.CostOfSandwiches(3, onSuccess, null, null);
}

要在成功回调中使用它,您必须将其作为 usercontext 对象传递——像这样 service.CostOfSandwiches(3, onSuccess, null, some_var);

OnSuccessMethod -

function onSuccess(result,usctx,methodname)
{ 
      if (usctx == "someval")
      {
            alert(result);
      }
}

有关一般 ajax 上下文选项的更多信息,请参阅此 - How to pass context in jquery ajax success callback function