从ajax(jquery)使用ASP.Net类对象(asp.net项目是WCF服务)

时间:2013-04-19 14:25:37

标签: asp.net ajax json wcf

我有一个WCF服务,它从客户端(jquery网页)发送字符串列表。当我用F5运行它时,wcf项目在visual studio中运行完美,一个窗口打开,我点击Invoke后看到了在Invoke.I下的list对象将在jquery中使用我的列表数据,所以我使用ajax来调用我的wcf服务,所有配置设置都是正确的。我正在使用abc类,它有一个可靠的列表,我有一个函数数据,它将一些数据设置到该列表。这是我的服务合同和数据合同形式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");
        }
    });

我必须使用Data: Object发送什么参数对象是示例,必须写入而不是Object。因为我的WCF函数正在使用abc类对象,我该怎么做。

2 个答案:

答案 0 :(得分: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参数

答案 1 :(得分:0)

嗨,请关注这篇文章,它会对你有所帮助   WCF REST Services Using Jquery AJAX