1

在我的应用程序中,我想使用 jQuery 和 Ajax 保存数据。我有一个 WCF 服务。我想使用 ajax 保存对象列表。我尝试使用以下代码,但它不起作用。

jQuery代码:

      var listOfObjects=new Array();
      //creating list of objects
      for(var i=0;i<5;i++)
       {   var MyEntity=new Object();
           MyEntity.TestId =i;
           MyEntity.TestId =i+"testName";
           listOfObjects.push(MyEntity);
       }

        //Saving info
        $.ajax({
            type: "POST",
            async: false,
            data: JSON.stringify(listOfObjects),
            url: "../ServiceLayer/myService.svc/SaveResults",
            contentType: "application/json; charset=utf-8",
            dataType: "json",          
            success: function () {
                alert("success");
            },
            error: function () {
                alert("Error");
            }
        });

周转基金:

    [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json,
     ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
    public void SaveLabResults(List<MyEntity> myEntity)
    {
          var lstEntities=myEntity;
    }

实体:

[DataContract]
public class MyEntity
{
    [DataMember]
    public string TestId { get; set; }
    [DataMember]
    public string TestName { get; set; }
}

通过这种方式,我正在尝试发送列表数据。但是内部服务器错误即将到来。我没有得到实际上我错的地方。还有其他方法可以将对象列表发送到 WCF 吗?

谢谢

4

3 回答 3

2

jQuery代码:

      var listOfObjects=new Array();
      //creating list of objects
      for(var i=0;i<5;i++)
       {   var MyEntity=new Object();
           MyEntity.TestId =i;
           MyEntity.TestId =i+"testName";
           listOfObjects.push(MyEntity);
       }

       var jsonList=JSON.stringify(listOfObjects);
       var dataToSend = '{"myEntity":'+jsonList+'';

        //Saving info
        $.ajax({
            type: "POST",
            async: false,
            data: dataToSend,
            url: "../ServiceLayer/myService.svc/SaveResults",
            contentType: "application/json; charset=utf-8",
            dataType: "json",          
            success: function () {
                alert("success");
            },
            error: function () {
                alert("Error");
            }
        });

周转基金:

    [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json,
     ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
    public void SaveLabResults(List<MyEntity> myEntity)
    {
          var lstEntities=myEntity;
    }

实体:

[DataContract]
public class MyEntity
{
    [DataMember]
    public string TestId { get; set; }
    [DataMember]
    public string TestName { get; set; }
}

我缺少的是

 1.var jsonList=JSON.stringify(listOfObjects);
 2.var dataToSend = '{"myEntity":'+jsonData+''; 

第二点 myEntity 键应该在最终的 json 对象中。并且键应该与 wcf 方法对象参数相同。

谢谢

于 2013-03-23T09:57:38.517 回答
1

在调用客户端代码之前,尝试BodyStyle = WebMessageBodyStyle.Bare使用您的服务器方法或在 JSON 数据中引入一个名为“myEntity”的根元素。JSON.stringify

于 2013-03-22T12:35:10.053 回答
0

可能是这个错误:

//creating list of objects
  for(var i=0;i<5;i++)
   {   var MyEntity=new Object();
       MyEntity.TestId =i;
       MyEntity.TestId =i+"testName";
       listOfObjects.push(MyEntity);
   } //-------------------^--------------shouldn't it be capital M

并在 ajax 函数中:

$.ajax({
        type: "POST",
        async: false,
        data: {data : JSON.stringify(listOfObjects)}, //<---not quite sure about it.
于 2013-03-22T12:32:03.953 回答