【问题标题】:Using an ASP.Net class object (asp.net project is WCF service) from ajax (jquery)使用来自 ajax (jquery) 的 ASP.Net 类对象(asp.net 项目是 WCF 服务)
【发布时间】:2013-04-12 23:36:57
【问题描述】:

我有一个 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");
        }
    });

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

【问题讨论】:

    标签: asp.net ajax json wcf


    【解决方案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 的参数数据。

    编辑:

    简单做:

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

    并省略 $ajax 中的 Data 参数

    【讨论】:

    • 我不会从jquery中添加一些数据,我只会成功调用数据函数
    • 那么,为什么在你的 c# 方法中需要参数呢?我将编辑我的答案。如果您不使用它们,请注意您的方法中不需要任何参数。
    • 因为我的数据函数只有在传入参数时才会运行。
    • 好的。所以你需要做两件事之一。更改c#类中的参数,或以json格式发送参数,在$ajax方法中。
    • 但是给 obj 不存在,我已经尝试过这种方法,并且我在数据方法中创建了 obj 对象,但是没有,当我从正在运行的数据参数中获取 obj 时,但是当我创建 obj在任何与参数不同的地方都没有运行
    【解决方案2】:

    您好,请关注这篇文章,它将对您有所帮助 WCF REST Services Using Jquery AJAX

    【讨论】:

      猜你喜欢
      • 2014-12-12
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 2012-03-30
      相关资源
      最近更新 更多