1
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 '

コンマが文字列を台無しにしていますか?

4

2 に答える 2

3

ASP.NET が値の名前を認識できるように、シリアル化する前に値をオブジェクトにラップする必要がある場合があります。

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

ASP.NET は多くの場合、キー名を使用して、値を割り当てる引数を決定します ( WebMethodURL が であると仮定します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) ...
于 2012-06-28T19:15:13.500 に答える
1
data = "192,273,182,347,13,34,52,2524";
var jsondata = $.toJSON(data);

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

文字列ではなく、オブジェクト引数を取ります。

于 2012-06-28T19:32:56.207 に答える