当我从jQuery向WebMethod发送2个参数并使用多个参数时,我收到此错误。
{"Message":"Invalid web service call, missing value for parameter: \u0027haha\u0027.","StackTrace":" at System.Web.Script.Services.WebServiceMethodData.CallMethod(Object target, IDictionary`2 parameters)\r\n at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary`2 parameters)\r\n at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"}
在jQuery中:
$(".txtNoiDung").focusout(function () {
$.ajax({
type: "POST",
url: "QuanLyTin.aspx/test1cai",
data: JSON.stringify({ hahas: $(this).val(),tuans: "hahaha" }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
$("#vltxtNoiDung").text(msg.d)
},
error: function (xhr, reason, ex) {
alert(reason);
}
});
});
在代码背后
[WebMethod()]
public static string test1cai(string haha, string tuan)
{
return "Hi, "+haha + tuan;
}
我该如何解决? 谢谢你们。
答案 0 :(得分:32)
您的服务正在接受名为haha
和tuan
的参数,但您的JavaScript正在传递hahas
和tuans
。从两者中删除“s”:
data: JSON.stringify({ haha: $(this).val(),tuan: "hahaha" }),
另外,请记住,这些参数在客户端和服务器端之间非常匹配,区分大小写。
答案 1 :(得分:4)
您的JavaScript对象属性名称必须与Web服务方法上的参数名称匹配,以便可以适当地绑定它们。你现在有:
{ hahas: $(this).val(),tuans: "hahaha" }
应该是:
{ haha: $(this).val(), tuan: "hahaha" }
答案 2 :(得分:0)
您应该在Ajax调用中的代码behinedto中传递相同的方法参数
数据:" {'哈哈':'" +"您的数据" +' tuan':'"' +"您的数据" +"' }"
答案 3 :(得分:0)
基本上,您必须在JSON.stringify({})时使用大括号 您必须像这样使用:
$。ajax({
输入:“ POST”,
网址:网址,
数据:JSON.stringify({PrefrencesDetailEntity:PrefrencesDetailEntity
contentType:“ application / json;”,// charset = utf-8“,
dataType:“ json”,
成功:功能(数据,jqXHR){
if(data!== null && data.Status === 201){
toastr.success(“您的更改已成功保存”);
}
}
});
和C#方法将是这样的:
[WebMethod] 公共静态NotificationValues PostNotificationData(PrefrencesDetailEntity PrefrencesDetailEntity) { //您的C#代码逻辑 }