无效的Web服务调用,缺少参数\ u0027filters \ u0027的值

时间:2011-10-28 21:00:49

标签: jquery asp.net web-services

当我将我的ajax数据发布到我的webservice时,我不断收到此错误。我已经尝试了很多次并更改了我的代码以返回一个json字符串,但它每次都失败。我想要做的就是发回我发布的数据,所以我知道它有效。我已经找到了答案,我尝试了其他替代方案,但我没有得到结果这里是错误

{“Message”:“无效的Web服务调用,缺少参数值:\ u0027filters \ u0027。”,“StackTrace”:“at System.Web.Script.Services.WebServiceMethodData.CallMethod(Object target,IDictionary {{ System.Web.Script.Script.Services.RestHandler.ExecuteWebServiceCall上的System.Web.Script.Ser.Services.RestHandler.InvokeMethod(HttpContext上下文,WebServiceMethodData methodData,IDictionary`2 rawParams)\ r \ n中的1}} 2个参数)\ r \ n (HttpContext context,WebServiceMethodData methodData)“,”ExceptionType“:”System.InvalidOperationException“}

jquery的:

2 parameters)\r\n at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary

C#:

data = [{'Name': 'Acer', 'Count': 1 }, {'Name': 'HP', 'Count': 2 }]
function getProducts(json, pageIndex, pageSize) {

    $.ajax({
        type: 'POST',
        url: '/website2/WebServices/GetProducts.asmx/GetProductsAndFilters',
        data: "{'data' : {'filters':" + JSON.stringify(json) + ", 'PageIndex' : " + pageIndex + ", 'PageSize' : " + pageSize +  "}}",
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: function (responseText) {
            //alert(responseText.d);
            $('.console').html(responseText.d);
        },
        error: function (xhr, status, error) {
            //var msg = JSON.parse(xhr.responseText);
            //alert(msg.Message);
            $('.console').html(xhr.responseText)
        }
    });
}
getProducts(data, "0", "2")

1 个答案:

答案 0 :(得分:3)

ASP.NET will handle the JSON [de]serialization for you automatically。更改服务器端方法以匹配从客户端传入的数据类型。

编辑:正如Jon指出的那样,您的数据参数的属性键需要与WebMethod的输入参数名称匹配(即使区分大小写)。

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<dvals> GetProductsAndFilters(List<dvals> dvals)
{
  // Do what you need to with "filters" here.

  return filters;
} 

此外,json调用中的JSON.stringify()变量定义在哪里?考虑到您向我们展示的代码,它看起来应该是data