【问题标题】:Sending json array by Ajax to ASP.NET通过 Ajax 将 json 数组发送到 ASP.NET
【发布时间】:2016-03-10 09:00:01
【问题描述】:

我尝试通过 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;
}

在调试器变量 jsonArray 中看起来像这样:"["first","second"]"

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

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

谁能解释一下为什么这个带有数组的解决方案不起作用?

【问题讨论】:

  • 正如错误消息所说,错误在服务器端。您的 AJAX 调用看起来不错,请向我们展示您的服务器端代码
  • 可以发SendArray web method代码
  • 我编辑了我的问题,现在有了 asp.net 方法。
  • 你需要接收数组stirngs = (string[] stringArray)
  • Mwell, "["first","second"]" 在技术上是一个字符串。如果有错误,则不是ajax错误。

标签: javascript c# jquery ajax


【解决方案1】:

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

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

然后你可以从代码隐藏中序列化它

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-09
    • 2014-10-01
    • 2016-10-11
    • 2015-11-21
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多