2014-02-25 128 views
1

我想从ma Web Service方法检索数据,但它返回null。jquery ajax在回应中返回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(味精) “displays:Object {ErrorMessage:”对象引用未设置为对象的实例。“,ErrorOccured:true,Items:null,NbReco RD: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; 

    ... 
} 

回答

0

我解决了这个问题。

我在我的解决方案中有两个项目,WCF和一个应用程序控制台,它们将会关闭Web服务。

我还在GettingStartedHost项目的app.config中添加了连接字符串,现在它运行良好。

1

您正在返回的字符串"OKKKKKK"但你设置好的的数据类型为JSON在$.ajax功能,所以你必须取消设置dataType或返回类似"{response: 'OKKKK'}"

+0

我不明白,我的GetTEST()方法运行良好,问题出在我的Statistic_1方法。你想让我改变什么数据类型? – Jayce

+0

我在SqlConnection的Statistic_1方法中有个例外。异常是:对象引用未设置为对象的实例。你有什么想法吗? – Jayce

0

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

也@campsjos答案说。

+0

我编辑我的帖子,你可以看到2个班。我必须把msg.Items没有?因为这是一个Object(这里是ResponseStatistic_1),它有一个Object(这里是Statistic_1) – Jayce

+0

的数组,我在SqlConnection的Statistic_1方法中有一个异常。异常是:对象引用未设置为对象的实例。你有什么想法吗? – Jayce