Jquery ajax在响应中返回null

时间:2014-02-25 08:49:02

标签: c# javascript jquery ajax

我想从ma Web Service方法中检索数据,但它返回null。

我使用一个返回字符串的方法(我的Web服务中的GetTEST())进行测试,但效果很好。

当我使用WCFTestClient.exe进行测试时,Statistic_1方法效果很好,但是使用JQuery它会返回null。

这是JavaScript代码:

function getStatistic1() {

var response;
var allstat1 = [];

$.ajax({
    type: 'GET',
    url: 'http://localhost:52768/Service1/Statistic_1',
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function (msg) {
        response = msg.Items;
        console.log(msg);

        for (var i = 0; i < response.length; i++) {
            allstat1[i] = [response[i].Geografisch_zone];
        }
        fillDataTable(allstat1);
    },
    error: function (e) {
        alert("error loading statistic 1");
    }
});
}

这是我的IService1.cs

[DataContractFormatAttribute]
[ServiceContract(Namespace ="WSSage100")]
public interface IService1
{

    [OperationContract]
    [WebInvoke(Method = "GET",ResponseFormat = WebMessageFormat.Json)]
    string GetTEST();

    [OperationContract]
    [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json)]
    ResponseStatistic_1 Statistic_1();
}

这是Service1.svc

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service1 : IService1
{

    public string GetTEST()
    {
        return "OKKKKKKKK";
    }

    public ResponseStatistic_1 Statistic_1()
    {...}
}

这里是“console.log(msg)”显示:Object {ErrorMessage:“对象引用未设置为对象的实例。”,ErrorOccured:true,Items:null,NbRecord:0}

ResponseSatistic_1课程:

public class ResponseStatistic_1 : IBaseClientEntity
{
    public ResponseStatistic_1()
    {

    }

    public ResponseStatistic_1(Statistic_1 [] items) : this()
    {
        this.Items = items;
    }

    #region Properties
    public Statistic_1[] Items
    {
        get;
        set;
    }
}

和Statistic_1课程:

public class Statistic_1
{
    private string _geografisch_zone;
    private decimal[] _sum; 
    private int _yearStart;
    private int _yearEnd;

    ...
}

3 个答案:

答案 0 :(得分:1)

您将返回字符串"OKKKKKK",但您已在$.ajax函数中将dataType设置为JSON,因此您必须取消设置dataType或返回类似"{response: 'OKKKK'}"的内容。

答案 1 :(得分:0)

请将response = msg.Items;更改为response = msg;

@campsjos也回答说。

答案 2 :(得分:0)

我解决了这个问题。

我的解决方案中有2个项目,WCF和一个应用程序控制台,用于关闭Web服务。

我还在GettingStartedHost项目的app.config中添加了连接字符串,现在效果很好。