【问题标题】:Passing parameters to WebMethod as JSON objects将参数作为 JSON 对象传递给 WebMethod
【发布时间】:2015-07-02 19:55:47
【问题描述】:

当我将参数传递给我的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 原语

【问题讨论】:

    标签: javascript c# json


    【解决方案1】:

    您在 jQuery JSON 帖子中缺少内容类型:

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

    查看这篇文章

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

    【讨论】:

    • 抱歉,我确实在 contentType 中包含了那个。
    【解决方案2】:

    想通了...我需要做两次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()
    }),
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-26
      • 2017-03-04
      • 1970-01-01
      相关资源
      最近更新 更多