将JSON对象发布到web方法$.ajax



我正试图通过点击按钮从表单中获取数据,并将其发送到代码背后的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: u0027newTasku0027.","StackTrace":"   at System.Web.Script.Services.WebServiceMethodData.CallMethod(Object target, IDictionary`2 parameters)rn   at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary`2 parameters)rn   at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)rn   at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"}

我尝试过用很多不同的方式来使用我的web方法,例如但不限于:

<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",
  • 如果您使用单独的js文件来运行此代码,请验证客户端ids

  • 如果newTask的类上有更多属性,则可以始终使用delete运算符从json对象中排除不必要的属性。(例如:delete newTask.UnecessaryProperty)

相关内容

  • 没有找到相关文章

最新更新