使用Ajax发送数组并在ASP Classic页面中接收它

时间:2015-12-01 12:04:42

标签: javascript jquery arrays ajax asp-classic

我需要在ASP页面中使用AJAX传递一个数组 我尝试将其作为GET传递,以查看它发送的数据,我注意到ASP只接收数组的最后记录。
我如何发送和接收整个阵列? (最好用POST法)

的Javascript

function editar(i) {
    arr=[];
    j=0;
    for (n=2; n<=9; n++) {
        arr[j]=$("#"+i+"-"+n).val(); //saves in the array all the field of a table's row
    }
    $.ajax ({
        url:"page.asp",
        data: { arr:arr },
        type:"POST"
    }).done(function(msg){
        alert(msg)
    })
}

ASP page.asp

<%  
    redim arr(10)
    for i=0 to 9
        arr(i)=request.Form("arr[]") 'Tried without the square brackets too
    next
%>

2 个答案:

答案 0 :(得分:1)

html表单没有数组数据结构。实际上,html表单并不真正具有数据类型:几乎所有放入表单的内容都会以字符串形式返回。所以你最好的选择可能是将数组写入一个字符串(通过.join()),然后你可以在另一端解析(使用,例如Split())。

请记住,我在JavaScript方面很糟糕,我认为你会做类似

的事情
data: { 'arr':arr.join('+++') }

然后在你的VBScript中,你做

dim arr '- note that you're NOT dimming as an array
arr = Split(Request.Form("arr"),"+++")

请注意,在实践中,每当我使用Split时,我都会在末尾添加分隔符,以确保Split不会抛出错误。

const delimiter = "+++"
arr = Split(Request.Form("arr") & delimiter,delimiter)

答案 1 :(得分:0)

function editar(i) {
arr=[];
j=0;
for (n=2; n<=9; n++) {
    arr[j]=$("#"+i+"-"+n).val(); //saves in the array all the field of a table's row
}
$.ajax ({
    url:"page.asp",
    data: { 'arr[]':arr },
    type:"POST"
}).done(function(msg){
    alert(msg)
})

}

我不得不将数据对象中的“arr”更改为'arr []',这样做

在服务器端使用下面的代码段 C#

    string[] values = Request.Form.GetValues("arr[]");

Vb的

Dim values As String() = Request.Form.GetValues("arr[]");