我尝试通过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;
但我总是有一个名为内部服务器错误的错误,我可以找出原因。
如果我发送普通字符串或整数,一切正常。
有人可以解释一下为什么这个带阵列的解决方案不起作用吗?
答案 0 :(得分:0)
您可以从ajax将数组作为base64字符串发送
var jsonArray = btoa(JSON.stringify(array));
然后您可以从代码隐藏序列中对其进行序列化
stringArray = Encoding.UTF8.GetString(Convert.FromBase64String(stringArray));