使用 Ajax 发送数组并在 ASP 经典页面中接收它
Send an Array with Ajax and receive it in ASP Classic page
我需要在 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
%>
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[]");
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)
我需要在 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
%>
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[]");
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)