WCF POST 通过 JQuery。如何在 JSON 中发送数组?

Posted

技术标签:

【中文标题】WCF POST 通过 JQuery。如何在 JSON 中发送数组?【英文标题】:WCF POST via JQuery. How to send an array inside a JSON? 【发布时间】:2016-03-21 05:08:20 【问题描述】:

我想通过 POST 将 JSON 发送到使用 JQuery 的 WCF 服务。问题是我真的不知道如何正确发送这个带有对象数组的 JSON,所以我收到了 400 Bad Request。

这是 JSON 结构。如您所见,有一些字段和一组文件(名称及其 base64 正文)。问题是最后一部分。


   "guid": "",
   "title": "d",
   "description": "d",
   "category": "19",
   "email": "emai@email.com",
   "priority": "1",
   "type": "2",
   "typeText": "Soli",
   "categoryText": "CU",
   "subCategoryText": "TMóvil",
   "files": [
      
         "nameFile": "stack.txt",
         "fileContent": "data:text/plain;base64,Y2xvd24="
      
   ]

这是发送 JSON 的代码:

    $.ajax(
        url: serviceUrl,
        type: "POST",
        data: JSON.stringify(params),
        async: true, 
        contentType: "application/json; charset=utf-8",
        dataType: "json",

        success: function (data) .....
        error: function(data)....
)

这是我在服务器端的界面:

[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "NewRequest", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
NewRequestResponse NewRequest(NewRequestTO obj);

这是 NewRequestTO 类

 [DataContract]
    public class NewRequestTO
    
        [DataMember]
        public string guid  get; set; 

        [DataMember]
        public string title  get; set; 

        [DataMember]
        public string description  get; set; 

        [DataMember]
        public string category  get; set; 

        [DataMember]
        public string email  get; set; 

        [DataMember]
        public string priority  get; set;  

        [DataMember]
        public string type  get; set; 

        [DataMember]
        public string typeText  get; set; 

        [DataMember]
        public string categoryText  get; set; 

        [DataMember]
        public string subCategoryText  get; set; 

        [DataMember]
        public string files  get; set; 

    

问题是,我该如何处理这些信息?我必须使用什么结构?

提前致谢。

【问题讨论】:

【参考方案1】:

这个:

"files": [
      
         "nameFile": "stack.txt",
         "fileContent": "data:text/plain;base64,Y2xvd24="
      
   ]

将相当于一个 IEnumerable 对象,其中对象具有属性 nameFile 和 fileContent。

例如

[DataMember]
public FileData[] files  get; set; 

public class FileData 
   [DataMember]
   public string nameFile  get; set;
   [DataMember]
   public string fileContent  get; set; 

【讨论】:

以上是关于WCF POST 通过 JQuery。如何在 JSON 中发送数组?的主要内容,如果未能解决你的问题,请参考以下文章

Ajax POST 调用不适用于 WCF

如何使用 WCF 自托管处理 Ajax JQUERY POST 请求

如何在 jQuery 中使用 WCF 方法

如何使用 post/put WCF RestFul Service

通过 GET 方法调用 WCF jQuery AJAX 中的安全问题

使用 POST 方法从 jQuery Ajax 调用 WCF 服务