ASP.NET webmethod获取带参数的ajax

时间:2018-05-29 23:32:27

标签: javascript jquery asp.net ajax asp.net-web-api

我有一个像这样的网络方法:

[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public static string test(string Name, int? Age)
{
    return "returned value";
}

和ajax电话:

$.ajax({
  type: "GET",
  url: "form.aspx/test",
  data: {'Name': "n1", 'Age': 30},
  contentType: "application/json; charset=utf-8",
  success: function (data) {
    console.log(data);
  }
});


没有参数/数据它可以工作,但是当我尝试传递一些参数时,我得到了这个错误:

GET http://localhost:55410/test.aspx/test?Name=n1&Age=30
500 (Internal Server Error)


我认为这是一个详细的例外:

System.ArgumentException: Unknown web method form.
Parameter name: methodName

2 个答案:

答案 0 :(得分:1)

您需要传递一个对象而不是字符串,并在n1周围加上引号以使其成为字符串:

$.ajax({
  type: "GET",
  url: "test.aspx/test",
  data: {'Name': 'n1', 'Age': 30},  // remove quotes & add quotes to n1
  contentType: "application/json; charset=utf-8",
  success: function (data) {
    console.log(data);
  }
});

答案 1 :(得分:0)

如果你想用url传递参数,你根本不需要使用data属性: 只需将它们传递到网址中,如下所示:

 $.ajax({
  type: "GET",
  url: "form.aspx/test?name=" + yourStringVariabel + "&age=" + yourAgeVariabel,
  contentType: "application/json; charset=utf-8",
  success: function (data) {
    console.log(data);
  }
});

尝试使用帖子查看是否有效:

 $.ajax({
  type: "POST",
  url: "form.aspx/test",
  data: JSON.stringify({ name: 'N1', age : 1 }),
  contentType: "application/json; charset=utf-8",
  success: function (data) {
    console.log(data);
  }
});