通过Ajax将json数组发送到ASP.NET

时间:2016-03-10 09:00:02

标签: javascript c# jquery ajax

我尝试通过Ajax将字符串数组发送到ASP.NET中的方法,它看起来像这样:

JAVASCRIPT

function sendArray(someParam) {
    var array = [];

    array[0] = 'first';
    array[1] = 'second';

    var jsonArray = JSON.stringify(array);

    $.ajax({
        type: 'POST',
        url: 'Default.aspx/SendArray',
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        data: '{ "someParam": "someParam", "stringArray": ' + jsonArray + ' }',

        success: function (response) {
            $('#AjaxResult').html('OK');
        },
        error: function (jqXHR, textStatus, errorThrown) {
            $('#AjaxResult').html('<span id="AjaxResultErrorText"><b>There is an error in your request:</b><br />' + errorThrown + '</span>');
        },
        beforeSend: function () {
            $('#AjaxResult').html('<div id="ProgressBar">Loading...</div>');
        },
        complete: function () {
        }
    });
}

ASP.NET

[WebMethod]
public static void SendArray(string stringArray)
{
    int foo = 1;
}

在debuger变量中jsonArray看起来像这样:&#34; [&#34;第一&#34;,&#34;第二&#34;]&#34;

但我总是有一个名为内部服务器错误的错误,我可以找出原因。

如果我发送普通字符串或整数,一切正常。

有人可以解释一下为什么这个带阵列的解决方案不起作用吗?

1 个答案:

答案 0 :(得分:0)

您可以从ajax将数组作为base64字符串发送

var jsonArray = btoa(JSON.stringify(array));

然后您可以从代码隐藏序列中对其进行序列化

stringArray = Encoding.UTF8.GetString(Convert.FromBase64String(stringArray));