从Anguilla JavaScript调用WCF Web方法时,所有这些参数是什么意思?

时间:2012-02-21 22:00:29

标签: tridion

我有以下内容(来自Tridion PowerTools),当某些JavaScript运行时,它会从CoreService获取用户名。

JavaScript(安圭拉):

PowerTools.Popups.Example.prototype._onbtnGetUserInfoClicked = function () { 
    var onSuccess = Function.getDelegate(this, this._handleUserInfo);
    var onFailure = null;
    var context = null;
    //call function
    PowerTools.Model.Services.Example.GetUserInfo(onSuccess, onFailure, 
                                                  context, false);
}; 

// Delegate function "onSuccess"
PowerTools.Popups.Example.prototype._handleUserInfo = function (response) {
    var p = this.properties;
    $j("#lblUserInfo").text(response.UserName);
};

CoreService方面:(C#.svc)

[OperationContract, WebGet(ResponseFormat = WebMessageFormat.Json)]
public ExampleData GetUserInfo()
{
    var coreService = Client.GetCoreService();
    _exampleData = new ExampleData()
    {
        UserName = coreService.GetCurrentUser().Title
    };
    return _exampleData;
}

这会发送异步调用:

PowerTools.Model.Services.Example.GetUserInfo(onSuccess, onFailure, context, false)

然而,这会分配不同的功能来处理响应:

Function.getDelegate(this, this._handleUserInfo)

但onSuccess,onFailure,context和布尔值来自哪里: PowerTools.Model.Services.Example.GetUserInfo(onSuccess, onFailure, context, false)

此四参数签名与服务代码中的无参数GetUserInfo()不匹配。为什么那个订单和这四个?

1 个答案:

答案 0 :(得分:7)

onSuccessonFailure是为处理来自WCF服务的响应而分配的回调函数。

假设这是来自PowerTools项目的代码,有一个自动生成的JavaScript方法,它充当WCF服务(服务源here)方法的代理方法,称为GetUserInfo()

在那里你实际上可以看到对CoreService的调用。这应该向您解释代理参数的映射。

  1. onSuccess是处理WCF服务响应的函数
  2. onFailure是调用失败时运行的函数
  3. context是一个将传递回回调函数的变量,因此您可以使用它来传递信息。
  4. false是呼叫是否同步
  5. 如果您的WCF服务要获取参数,则生成的代理将形成不同的签名,例如

    PowerTools.Model.Services.Example.GetOtherInfo(param1, param2, onSuccess, 
                                                   onFailure, context, false);