我想从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;
...
}
答案 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中添加了连接字符串,现在效果很好。