将参数作为JSON对象传递给WebMethod

时间:2015-07-02 19:55:48

标签: javascript c# json

我将参数传递给WebmMethod时遇到各种错误。以下是我的各种尝试和我得到的错误:

globalData是一个数组,mapping是一个可以反序列化为List<Mapping>的数组,selectedFund是一个整数。

C#WebMethod

[WebMethod]
public static void ProcessData(string data, List<Mapping> mapping, int selectedFund)
{
    //blah blah
}

尝试1

var payload = new Object();
payload.data = globalData;
payload.mapping = chosenMappings;
payload.selectedFund = $selectedFund.val();

$.ajax({
//...etc
data: JSON.stringify(payload),
contentType: "application/json; charset=utf-8",
}

错误: System.String不支持序列化数组。

尝试2

$.ajax({
//... etc...
    data: {
        data: JSON.stringify(globalData),
        mapping: JSON.stringify(chosenMappings),
        selectedFund: $selectedFund.val()
    },
    contentType: "application/json; charset=utf-8",

错误:无效的Json原语

2 个答案:

答案 0 :(得分:0)

您在jQuery JSON帖子中遗漏了内容类型:

contentType: "application/json; charset=utf-8",

查看这篇文章

http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

答案 1 :(得分:0)

想出来......我需要做JSON.stringify()两次。一旦在外面,那么一旦进入......

contentType: "application/json; charset=utf-8",
type: 'POST',
dataType: "json",
//data: JSON.stringify(payload),
data: JSON.stringify({
    data: JSON.stringify(globalData),
    mapping: JSON.stringify(chosenMappings),
    selectedFund: $selectedFund.val()
}),