使用 POST 方法从 jQuery Ajax 调用 WCF 服务

Posted

技术标签:

【中文标题】使用 POST 方法从 jQuery Ajax 调用 WCF 服务【英文标题】:Calling WCF service from jQuery Ajax using POST method 【发布时间】:2012-03-05 14:00:40 【问题描述】:

我有以下 WCF 方法

[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "UserService/AddUser", BodyStyle = WebMessageBodyStyle.WrappedRequest)]
public User AddUser(string LoginId, string Name)

    var user = input;

    // Some business logic here

    return user;

我有一个 jQuery Ajax 客户端代码如下

<script type="text/javascript">
    $(document).ready(function () 

        $("#submit").click(function () 
            var input =
            
                LoginId: $("#LoginId").val(),
                Name: $("#Name").val()
            ;

            $.ajax(
                cache: false,
                type: "POST",
                async: false,
                url: "http://localhost:2000/UserService/AddUser",
                data: JSON.stringify(input),
                contentType: "application/json",
                dataType: "json",
                success: function (userViewModel) 
                    var user = userViewModel;
                    alert(user);
                
            );
        );
    );
</script>

一旦 ajax 调用 AddUser 方法 LoginId 和 Name 值在 AddUser 方法的两个参数中设置,但是,我想要做的是具有如下的方法签名

public User AddUser(User user)

当然,User 类中有 LoginId 和 Name 属性。

如何在不手动设置值的情况下自动将客户端参数绑定到用户实例?

【问题讨论】:

【参考方案1】:

我自己找到了解决办法

我应该用对象名称包装 json 数据,如下所示:

        var input =
        
            "user": 
            
                "LoginId": $("#LoginId").val(),
                "Name": $("#Name").val()
            
        ;

【讨论】:

以上是关于使用 POST 方法从 jQuery Ajax 调用 WCF 服务的主要内容,如果未能解决你的问题,请参考以下文章

jQuery – AJAX get() 和 post() 方法

.NET (ApiController) / jQuery .ajax:从 POST 返回啥?

关于JQuery中 $.get() $.post() $.ajax()的区别和使用

是否可以使用 jQuery 加密 AJAX 调用以进行身份​​验证?

jQuery-Ajax_get_post学习记录

wcf REST 服务和 JQuery Ajax Post:方法不允许