使用从jQuery AJAX调用返回的数据到WCF服务

时间:2013-05-28 20:36:23

标签: wcf jquery c#-4.0

创建了一个非常简单的WCF函数,它返回一个字符串。

public interface IDataService
{
    [OperationContract]
    [WebInvoke( Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json )]
    string DoWork( );
}

[AspNetCompatibilityRequirements( RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed )]
public class DataService : IDataService
{
    public string DoWork( )
    {
        return "DONE";
    }
}

我使用jQuery.ajax调用它:

$.ajax({
    type: "POST",
    url: service + "/DoWork",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",

    success: function (data, textStatus, jqXHR) {
        alert(textStatus);       --> success
        alert(data);             --> object
        alert(data.d);           --> undefined
    },

    error: function (jqXHR, textStatus, errorThrown) {
        alert(textStatus + " : " + errorThrown);
    }
});

该函数成功返回。

textStatus显示成功

data显示对象

data.d 未定义

如何从DoWork返回字符串?

1 个答案:

答案 0 :(得分:0)

根据建议使用console.log(data),显示如下所示的结果:

Object {DoWorkResult: "DONE"}

然后data.DoWorkResult可以访问返回字符串。

success: function (data, textStatus, jqXHR) {
   console.log(data);
   alert(data.DoWorkResult);
},

对于数据结构(例如员工列表),可以像数组一样访问JSON数据(假设您已将服务配置为返回JSON):

for(var i=0; i<data.GetEmployees.length; i++) {   
   console.log(data.GetEmployees[i].Name + " - " + data.GetEmployees[i].Position); 
}