Asp.net AJAX将数据发布到asmx WebService方法始终为空
我正在运行一个带有测试方法(重命名文件)的web服务。 使用Ajax(客户端),我能够调用我的服务上的函数 但是当我向我的方法发送Int、String..或其他任何东西时,数据显示为“null”; 有什么问题吗 我的javascript:Asp.net AJAX将数据发布到asmx WebService方法始终为空,asp.net,ajax,vb.net,asmx,Asp.net,Ajax,Vb.net,Asmx,我正在运行一个带有测试方法(重命名文件)的web服务。 使用Ajax(客户端),我能够调用我的服务上的函数 但是当我向我的方法发送Int、String..或其他任何东西时,数据显示为“null”; 有什么问题吗 我的javascript: $.ajax({ url:“webserviceest.asmx/NewId”, 类型:“POST”, contentType:“应用程序/json;字符集=utf-8”, //数据:JSON.stringify({rename:newName}), 数据
$.ajax({
url:“webserviceest.asmx/NewId”,
类型:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
//数据:JSON.stringify({rename:newName}),
数据:“{Id':8}”,
数据类型:“json”,
成功:功能(数据){
警报(数据d);
}
});代码>ASMXWeb服务使用SOAP,因此您需要在SOAP负载内发送消息。尝试按以下方式发送您的邮件:
data: '<soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' +
'<soap:body>' +
'<newid xmlns="WebServiceTest.asmx/NewId">' +
'<id>' + id + '</id>' +
'</newid>' +
'</soap:body>' +
'</soap:envelope>',
beforeSend: function (xhr) {
xhr.setRequestHeader('SOAPAction', 'WebServiceTest.asmx/NewId');
},
数据:“”+
'' +
'' +
“+id+”+
'' +
'' +
'',
发送前:函数(xhr){
setRequestHeader('SOAPAction','WebServiceTest.asmx/NewId');
},
Http请求的参数为。因此,正如@Maurits van Beusekom在评论中指出的,您似乎没有正确发送数据:数据应该是数据:“{id':8}”
,而不是数据:“{id':8}”
,如下所示:
$.ajax({
url: "WebServiceTest.asmx/NewId",
type: "POST",
contentType: "application/json; charset=utf-8",
data: "{ 'id': 8 }",
dataType: "json",
success: function (data) {
alert(data.d);
}
});
这可能是大小写问题,您是否尝试过将JSON消息的Id
参数更新为小写?webservice方法的参数名是用小写字母定义的,但是在JSON消息中,它以大写字母“I”开头。可以尝试使用以下JSON消息{'id':8}
。ASMX web服务也可以使用HttpPost
调用,因此您不需要只使用SOAP。这与SOAP有什么关系?这个答案是关于GET动词的。