0

我有一个 WCF 服务,它从客户端(jquery 网页)发送字符串列表。当我使用 F5 运行 wcf 项目时,wcf 项目在 Visual Studio 中运行完美,一个窗口正在打开,我在看到下面的列表对象后单击 Invoke调用。我将在 jquery 中使用我的列表数据,所以我使用 ajax 来调用我的 wcf 服务,所有配置设置都是正确的。我正在使用abc具有可验证列表的类,并且我有一个函数 data 将一些数据设置到该列表。这是我的服务合同和数据合同表格 WCF(IService1.cs):

namespace kgms
{
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        abc data(abc obj);
   }
   [DataContract]
        public class abc {
            [DataMember]
            public List<string> sval { get; set; }
            [DataMember]
            public List<string> kval { get; set; }
        }
}

这是我的数据函数信息(Service1.svc.cs):

namespace kgms
{
   [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class Service1 : IService1
    {
       public abc data(abc obj) {
               obj.sval.Add("asd");
               obj.sval.Add("sdf");
               obj.kval.Add("example");
               obj.kval.Add(":-)");
            return obj;
        }
    }
}

我将从该 ajax 调用访问:

$('#buton').click(function () {
Type = "POST";
            Url = "http://compname/sil/Service1.svc/data";
            ContentType = "application/json; charset=utf-8";
            DataType = "json"; var ProcessData = true;
            CallService();

        });
 function CallService() {
            $.ajax({
                type: Type,
                url: Url,
                data: Object,
                contentType: ContentType,
                dataType: DataType,
                processdata: ProcessData,
                success: function (msg) {
                    ServiceSucceeded(msg);
                },
                error: ServiceFailed
            });
        }
        function ServiceFailed(result) {
            alert("basarisiz");
            alert('Service call failed: ' + result.status + '' + result.statusText);
            Type = null; varUrl = null; Data = null; ContentType = null; DataType = null; ProcessData = null;
        }
        function ServiceSucceeded(result) {
            alert("good");
        }
    });

我必须用 Object 发送什么参数Data: Object是样本,必须写什么而不是 Object。因为我的 WCF 函数采用 abc 类对象,我该怎么办。

4

2 回答 2

1

希望这对你有帮助。

 var abcCtor = function() {
     this.sval  = [];
     this.kval  = [];
 }

 var mainObj = function() {
    this.abc = new abcCtor();
 }

 var abcObj = new mainObj();
    abcObj.abc.sval.push('name');
    abcObj.abc.sval.push('age');

    abcObj.abc.kval.push('jhonatas');
    abcObj.abc.kval.push('00');

var jsonValue = JSON.stringify(abcObj);

然后,将 jsonValue 传递给 $ajax 的参数 Data。

编辑:

简单做:

  public abc data() {
               obj.sval.Add("asd");
               obj.sval.Add("sdf");
               obj.kval.Add("example");
               obj.kval.Add(":-)");
            return obj;
        }

并从 $ajax 中省略 Data 参数

于 2013-04-19T14:49:04.727 回答
0

嗨,请关注这篇文章,它将帮助您 使用 Jquery AJAX 的 WCF REST 服务

于 2013-04-21T07:48:29.453 回答