ASP.NET:jQuery AJAX’data’param问题

前端之家收集整理的这篇文章主要介绍了ASP.NET:jQuery AJAX’data’param问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在使用这段代码的问题,我花了最近3个小时的时间挖掘,并试图找到答案。由于我没有成功,我只会发布代码,并询问我的Web服务应该有哪些参数来处理这个请求:
var args = [{ key: 'myId',value: 'myValue' },{ key: 'myOtherId',value: 'myOtherValue'}];
var dataToSend = { name: 'fooId',value: 'fooValue',args: args };
$.ajax({
type: 'POST',url: 'fooURL',data: dataToSend,contentType: 'application/json; charset=utf-8',dataType: 'json',success: OnSuccess,error: OnError
});

现在,哪一种签名我应该能够得到我的“dataToSend”?

我试过了:

[WebMethod,ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string Foo(string name,object value,List<Args> args)
{
    return "OK";
}

public class Args
{
    public string key { get; set; }
    public object value { get; set; }
}

[WebMethod,object[] args)
{
    return "OK";
}

并且

[WebMethod,ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string Foo(dataToSend dataToSend)
{
    return "OK";
}

public class dataToSend
{
    public string name { get; set; }
    public object value { get; set; }
    public List<Args> args = new List<Args>();

}
public class Args
{
    public string key { get; set; }
    public object value { get; set; }
}

解决方法

尝试将数据作为字符串传递,而不是对象,即:
$.ajax( {
    ...
    data : '{ a: 2,b: 3 }',...
} );

这样做的原因是,如果您将对象指定为数据,则jQuery使用查询字符串格式对数据进行序列化,而服务器则期待直接使用JSON格式。

尽管告诉jQuery使用JSON作为数据类型,但这似乎只与结果相关,而不是发送到服务器的请求有效性。

其他一切对我来说都是正确的。

猜你在找的asp.Net相关文章