请参阅以下JavaScript代码:
function SaveOrReview(Me)
{
var frm = document.forms[0];
var arrayDisposals;
var intCount;
var arrayDisposals = new Array();
for (i = 0; i < frm.elements.length; i++) {
if (frm.elements[i].type == "checkbox" && frm.elements[i].name.substr(0, 3) == "Del") {
arrayDisposals.push(frm.elements[i].id)
}
}
$.ajax({
type: "POST",
url: "PrimaryNominalAjax.aspx/AddDisposalList",
data: '{str: "' + arrayDisposals + '", strCon: "' + $("#<%=fieldGenieConnectionString.ClientID%>")[0].value + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess(),
failure: function (response) {
alert('there was an error updating a MOPI grade')
}
});
function OnSuccess() {
return function (response) {
alert('succeeded')
}
}
}
以及下面的服务器端代码:
<System.Web.Services.WebMethod()> _
Public Shared Function AddDisposalList(ByVal str() as string, ByVal strCon As String) As String
msgbox("test")
end function
未调用web方法。如果我从JavaScript调用中删除数组参数,并从调用JavaScript中删除字符串数组,那么它就可以工作,即显示消息框。因此我的问题是如何通过AJAX传递数组。
我在这里看了几个其他问题,但它们与PHP和Java有关,而不是VB.NET。
答案 0 :(得分:2)
在将其传递给ajax调用之前,您希望JSON.stringify()
(将其转换为JSON)。
类似的东西:
data: '{str: ' + JSON.stringify(arrayDisposals) + ', strCon: "' + $("#<%=fieldGenieConnectionString.ClientID%>")[0].value + '"}',