C# web服务调用无效,asmx web服务的参数缺少值
我有以下错误:“无效的web服务调用,当我使用参数调用web服务方法时,参数缺少值。” 我正在使用一个不带参数的web服务方法进行测试,该方法返回相同类型的对象,并且运行良好 以下是我的web服务方法:C# web服务调用无效,asmx web服务的参数缺少值,c#,asp.net,web-services,asmx,C#,Asp.net,Web Services,Asmx,我有以下错误:“无效的web服务调用,当我使用参数调用web服务方法时,参数缺少值。” 我正在使用一个不带参数的web服务方法进行测试,该方法返回相同类型的对象,并且运行良好 以下是我的web服务方法: [WebMethod] [ScriptMethod(UseHttpGet = true)] public ResponseStatistic_3 Statistic_3(string klant) { Statistic_3[] items =
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public ResponseStatistic_3 Statistic_3(string klant)
{
Statistic_3[] items = Helper.Helper_Statistic_3(klant).ToArray();
ResponseStatistic_3 response = new ResponseStatistic_3(items);
return response;
}
这是我的javascript代码,我在kla变量中检索到良好的值:
function getStatistic3() {
var response;
var allstat3 = [];
var kla = $('#Select1').val();
var dataJSon = { klant: kla }
if (kla) {
$.ajax({
type: 'GET',
url: 'http://localhost:52251/Service1.asmx/Statistic_3',
data: dataJSon,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
processData: false,
success: function (msg) {
response = msg.d;
for (var i = 0; i < response.Items.length; i++) {
var j = 0;
allstat3[i] = [response.Items[i].Interventie, response.Items[i].Sum[j], response.Items[i].Sum[++j], response.Items[i].Sum[++j], response.Items[i].Sum[++j], response.Items[i].Sum[++j]];
}
fillDataTable(allstat3);
},
error: function (e) {
alert("error loading statistic 3");
}
});
} else {
alert("statistic 3 null");
}
}
函数getStatistic3(){
var反应;
var allstat3=[];
var kla=$('#Select1').val();
var dataJSon={klant:kla}
if(kla){
$.ajax({
键入:“GET”,
网址:'http://localhost:52251/Service1.asmx/Statistic_3',
数据:dataJSon,
contentType:'application/json;charset=utf-8',
数据类型:“json”,
processData:false,
成功:功能(msg){
响应=msg.d;
对于(var i=0;i怎么了?您的webservice方法需要一个字符串参数,但您发送的是客户对象的JSON表示。我认为内置JavaScriptSerializer正在尝试反序列化您的参数并导致错误。我在下面的示例中调整了您的代码:
function getStatistic3() {
var response;
var allstat3 = [];
$.ajax({
type: 'GET',
url: 'http://localhost:52251/Service1.asmx/Statistic_3',
data: $('#Select1').val(),
dataType: 'json',
processData: false,
success: function (msg) {
response = msg.d;
for (var i = 0; i < response.Items.length; i++) {
var j = 0;
allstat3[i] = [response.Items[i].Interventie, response.Items[i].Sum[j], response.Items[i].Sum[++j], response.Items[i].Sum[++j], response.Items[i].Sum[++j], response.Items[i].Sum[++j]];
}
fillDataTable(allstat3);
},
error: function (e) {
alert("error loading statistic 3");
}
});
}
在使用JSON.stringify()方法将参数发送到web服务之前,需要对其进行字符串化 函数getStatistic3(){ var反应; var allstat3=[]; var kla=$('#Select1').val(); **var dataJSon=JSON.stringify({klant:kla})** if(kla){ $.ajax({ 键入:“GET”, 网址:'http://localhost:52251/Service1.asmx/Statistic_3', 数据:dataJSon, contentType:'application/json;charset=utf-8', 数据类型:“json”, processData:false, 成功:功能(msg){ 响应=msg.d; 对于(var i=0;i
数据:“klant='test'”
),会发生什么?它通过了吗?@Jayce:你应该问你的WCF问题。“我们的答案比在新的开发中使用传统技术,然后再被它们束缚要好得多。@Jayce。”。伟大的看看@Rob Angelier的答案。我认为这看起来没问题。尽管您可能需要执行类似于数据的操作:“klant=”+$(“#Select1”).val()+“
好吧,这很奇怪。我从请求中删除了contentType头,因为修改后的请求没有向服务器发送任何json,您能再试一次吗?您能将“type”属性更改为“POST”并看看这是否有帮助吗?这些旧的asmx服务存在一些常见问题。PageMethods也会出现这个问题(几乎相同),它们只接受POST请求。我找到了grace@SimonC-->数据:“klant=”+$(“#Select1”).val()+”“也感谢您的帮助。
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public ResponseStatistic_3 Statistic_3(string klant)
{
Statistic_3[] items = Helper.Helper_Statistic_3(klant).ToArray();
ResponseStatistic_3 response = new ResponseStatistic_3(items);
return response;
}
function getStatistic3() {
var response;
var allstat3 = [];
var kla = $('#Select1').val();
**var dataJSon = JSON.stringify({ klant: kla })**
if (kla) {
$.ajax({
type: 'GET',
url: 'http://localhost:52251/Service1.asmx/Statistic_3',
data: dataJSon,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
processData: false,
success: function (msg) {
response = msg.d;
for (var i = 0; i < response.Items.length; i++) {
var j = 0;
allstat3[i] = [response.Items[i].Interventie, response.Items[i].Sum[j], response.Items[i].Sum[++j], response.Items[i].Sum[++j], response.Items[i].Sum[++j], response.Items[i].Sum[++j]];
}
fillDataTable(allstat3);
},
error: function (e) {
alert("error loading statistic 3");
}
});
} else {
alert("statistic 3 null");
}
}