ASP.NET:jQueryAjax‘data’param问题

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (66)

在过去的三个小时里,我一直在研究这段代码,并试图找到答案。由于我没有成功,所以我只会发布代码并询问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; }
}
提问于
用户回答回答于

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

$.ajax( {
    ...
    data : '{ a: 2, b: 3 }',
    ...
} );

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

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

在我看来,你所有的东西都是正确的。

用户回答回答于

JavaScript

postData[0] = 'data!';
postData[1] = 'moar data!';
postData[2] = 'and some data';

$.ajax({
    type: 'POST',
    url: 'postUrl',
    data: { data: postData },
});

PHP

$data = $_POST['data'][0];
$moar_data = $_POST['data'][1];
$and_some_data = $_POST['data'][2];

扫码关注云+社区

领取腾讯云代金券