0

クライアント(jquery Webページ)から文字列リストを送信するWCFサービスがあります。wcfプロジェクトは、F5で実行するとビジュアルスタジオで完全に実行され、ウィンドウが開いて、下にリストオブジェクトが表示されたら[Invoke]をクリックしますInvoke.I は 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はサンプルであり、オブジェクトの代わりに書き込む必要があるものです。私の 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 に答える