“500:未知的Web方法”当我使用$.ajax和WebMethod发送数据时
本文关键字:ajax WebMethod 数据 未知 Web 方法 | 更新日期: 2023-09-27 18:33:24
我正在尝试使用 JQuery Ajax 函数将数据通过 Ajax 发送到我的数据库,并且和我的 C# 代码中的 WebMethod。 但它不起作用。 有什么想法吗?
$(function() {
$('#Add').click(function() {
var $dialog = $('<div id="MyDialog"></div').appendTo('body')
.load("../Pop-up.aspx #pop-up", createDatePicker)
.dialog({
position: 'center',
width: 550,
buttons: {
"OK": function() {
var jname = $('#name').val();
var jbirthday = $('#datepicker').val();
var jgender = $('input:radio[name=Gender]:checked').val();
var jcourseId = $('#DropDownList1').val();
var myjson = {
name: jname,
birthday: jbirthday,
gender: jgender,
courseId: jcourseId
};
$.ajax({
type: "post",
contentType: "application/json;charset=utf-8",
dataType: "json",
url: "Manage.aspx/AddStudent",
data: $.toJSON(myjson)
});
},
"Cancel": function() {
$(this).dialog('close');
}
}
});
return false;
});
});
这是我的网络方法
[WebMethod]
public static void AddStudent(string birthday,string name,string gender,string courseId)
{
var repository = new StudentRepository();
var student = new Student
{
Birthday = Convert.ToDateTime(birthday),
Name = name,
Gender = gender,
Course_ID = Convert.ToInt32(courseId)
};
repository.InsertStudent(student);
repository.Save();
}
尝试更改 JSON 对象上属性的顺序,使其与 Webmethod中的参数匹配。
var myjson = {
birthday: jbirthday, //now the properties match the parameters
name: jname,
gender: jgender,
courseId: jcourseId
};
public static void AddStudent(string birthday, string name, string gender,
string courseId)
{ ... }
我认为您看到的是 500 错误,因为 ASP.NET 找不到与您的反序列化 JSON 对象匹配的方法签名,即使所有参数都是字符串类型。
更新
我有机会测试我最初建议的内容,属性的顺序并不重要。
不确定这是否有任何帮助,但是,我在以下情况下看到了 500 个错误:
我的 JSON 对象上的属性与我的 WebMethod 中的所有参数都不匹配
var myjson = {b: 'test1', c: 'test' }; [System.Web.Services.WebMethod] public static void TestMethod(string a, string b) { //does nothing. }
我传入的参数之一未定义。
var myjson = {a: undefined, b: 'test' }; [System.Web.Services.WebMethod] public static void TestMethod(string a, string b) { //does nothing. }
试试这个:
data: JSON.stringify(myjson)
而不是:
data: $.toJSON(myjson)