使用 GET 请求发送数组

spe*_*123 6 javascript python arrays get http

我正在从 Javascript 向 Python 发出获取请求。我正在尝试传递一个二维数组,比如

[["one", "two"],["foo", "bar"]]
Run Code Online (Sandbox Code Playgroud)

这是我目前正在尝试的,但它不起作用。

因此,在我的 javascript 中,我有一个与上面的数组类似的数组,然后像这样传递它

var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", "http://192.67.64.41/cgi-bin/hi.py?array=" + myArray, false );
xmlHttp.send( null );
Run Code Online (Sandbox Code Playgroud)

然后在 python 中我得到这样的结果

import cgi
form = cgi.FieldStorage()
array = form.getvalue("array")
Run Code Online (Sandbox Code Playgroud)

但如果我这样做的话,结果并不正确,在 python 中

print array[0]
#I get -> "o"
print array[1]
#I get -> "n"
print array[2]
#I get -> "e"
Run Code Online (Sandbox Code Playgroud)

等等,但如果我想要的是

print array[0]
#output -> ["one", "two"]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

谢谢

Car*_*ham 5

您不能简单地将数组作为查询参数传递。您需要迭代该数组并将其添加到 URL 字符串中,例如?array[]=one&array[]=two

const a = ['one', 'two']
let url = 'www.google.com'

for (let i = 0; i < a.length; i++) {
    // Check to see if the URL has a query string already
    if (url.indexOf('?') === -1) {
        url = `${url}?array[]=${a[i]}`
    } else {
        url = `${url}&array[]=${a[i]}`
    }
}

console.log(url)
Run Code Online (Sandbox Code Playgroud)