小编典典

ASP.NET:jQuery AJAX'数据'参数问题

ajax

我在过去的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, ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string Foo(string name, object value, 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; }
}

阅读 263

收藏
2020-07-26

共1个答案

小编典典

尝试将数据作为字符串而不是对象传递,即:

$ .ajax({
    ...
    数据:“ {a:2,b:3}”,
    ...
});

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

尽管告诉jQuery使用JSON作为数据类型,但仍会发生这种情况-它似乎仅与结果有关,而与发送到服务器的请求有效负载无关。

你在那里的其他一切对我来说都是正确的。

2020-07-26