我正在尝试通过单击按钮从表单获取数据,并将其发送到后面代码中的 Web 方法。我想将它作为 JSON 对象传递,或者至少我认为这是惯例?这是我当前的代码,但是它会生成错误(如代码下方所示)。
$("#addTask")
.click(function( event ) {
var newTask = new Object();
newTask.TaskName = $('#ctl00_ContentArea_taskName').val();
newTask.TaskDescription = $('#ctl00_ContentArea_taskDescription').val();
newTask.SQLObjectID = $('#ctl00_ContentArea_sqlReportingID').val();
newTask.WarehouseSQLObjectID = $('#ctl00_ContentArea_warehouseSQLObjectID').val();
$.ajax({
type: "POST",
url: 'AddTask.aspx/validateTask',
data: JSON.stringify(newTask),
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success : function(data) {
alert( data.d );
}
});
});
__
{"Message":"Invalid web service call, missing value for parameter: \u0027newTask\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"}
我尝试过以多种不同的方式使用我的网络方法,例如但不限于:
<System.Web.Services.WebMethod()> _
Public Shared Function validateTask(ByVal newTask As TaskBO)
或者使用一堆单独的参数作为字符串。
完成我想做的事情的正确方法是什么?关于格式化 JSON 对象,我不明白什么?
感谢您的帮助!
最佳答案
Web 服务需要一个带有“newTask”键的项目(如方法的参数所示)。您的请求将发送为:
{
"TaskName": "stuff",
"TaskDescription": "stuff",
"SQLObjectID": "stuff",
"WarehouseSQLObjectID": "stuff"
}
但你确实需要它:
{
"newTask": {
"TaskName": "stuff",
"TaskDescription": "stuff",
"SQLObjectID": "stuff",
"WarehouseSQLObjectID": "stuff"
}
}
因此,将您的 $.ajax()
调用更改为:
data: JSON.stringify({
newTask: newTask
}),
contentType: "application/json; charset=utf-8",
关于javascript - 将 JSON 对象发布到 Web 方法 - $.ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17752822/