【问题标题】:Passing a string to AJAX/Json将字符串传递给 AJAX/Json
【发布时间】:2012-06-28 19:05:58
【问题描述】:
function s() {
    data = "192,273,182,347,13,34,52,2524";
    var jsondata = $.toJSON(data);
    $.ajax({
        type: "POST",
        url: "index.aspx/s",
        data: jsondata,
        contentType: "application/json; charset=utf-8",
        dataType: "text json",
        beforeSend: function (xhr) {
            xhr.setRequestHeader("Content-type",
                         "application/json; charset=utf-8");
        },
        success: function (msg) {
            if (msg.d == "OK") {
                //WIN!
            }
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            if (typeof (errorThown) != "undefined")
                alert("ERROR: SaveWidgetSettings() " + textStatus + '\n' + errorThrown);
            else {
                var errdetail = eval("(" + XMLHttpRequest.responseText + ")");
                alert("ERROR: SaveWidgetSettings() " + textStatus + '\n' + errdetail.Message);
            }
        }

    });

我将问题调试为:

cannot convert object of type 'system.string' to type 'system.collections.generic.idictionary 2 system.string system.object '

逗号是否弄乱了字符串?

【问题讨论】:

  • 您的数据是一个字符串,而不是一个数组,因此它可能不会转换为您期望的 json。

标签: javascript jquery asp.net ajax json


【解决方案1】:

您可能需要在序列化之前将值包装在一个对象中,以便 ASP.NET 知道该值的名称:

data = { csv: "192,273,182,347,13,34,52,2524" };

ASP.NET 经常使用键名来确定将值分配给哪个参数(假设 WebMethod 的 URL 为 index.aspx/s):

[WebMethod]
public static object s(string csv) ...

另外,如果目标是一个集合,data 也可以是一个Array

data = { ids: [192, 273, 182, 347, 13, 34, 52, 2524] };

// then...
[WebMethod]
public static object s(IEnumerable<int> ids) ...

【讨论】:

    【解决方案2】:
    data = "192,273,182,347,13,34,52,2524";
    var jsondata = $.toJSON(data);
    

    http://www.jquerysdk.com/api/jQuery.toJSON

    它接受一个对象参数,而不是一个字符串。

    【讨论】:

      猜你喜欢
      • 2011-02-12
      • 2018-11-25
      • 2014-09-04
      • 2020-05-13
      • 1970-01-01
      • 1970-01-01
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多