使用JavaScript/JQuery在AJAX上传递数组

Pass an array over AJAX using JavaScript/JQuery

本文关键字:数组 AJAX JavaScript JQuery 使用      更新时间:2023-09-26

请看下面的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

未调用webmethod。如果我从JavaScript调用中删除数组参数,从调用JavaScript中删除字符串数组,那么它就可以工作,即消息框显示。因此,我的问题是如何通过AJAX传递数组。

我在这里看到了其他一些问题,但它们与PHP和Java有关,而不是VB.NET。

在将其传递给ajax调用之前,您需要将其JSON.stringify()(将其转换为JSON)。

类似:

data: '{str: ' + JSON.stringify(arrayDisposals) + ', strCon: "' + $("#<%=fieldGenieConnectionString.ClientID%>")[0].value + '"}',