![](/img/trans.png)
[英]Pass variable from server-side controller to client-side to use in client-side JavaScript
[英]Pass Javascript array with Jquery and JSON from client-side to server side in Flask
我试图将一个 Javascript 数组从客户端传递到服务器端(Flask)。 我的代码似乎适用于整数和字符串。 当我尝试使用完全相同的代码发送数组时,我得到None
。
服务器端代码:
@app.route("/route1", methods=['GET', 'POST'])
def route1():
a = request.args.get('post')
result = json.dumps(a)
print(a)
print(result)
客户端:
$SCRIPT_ROOT = {{ request.script_root | tojson | safe }};
var x = ["test", "test2"];
function newFunction() {
console.log(x)
$.getJSON($SCRIPT_ROOT + '/route1', { post: x },
function (data) {
var response = data.result;
console.log(response);
}
)
};
正如我之前所说,当x
被简单地分配一个字符串或一个整数时,这似乎完美地工作。 当试图通过这个数组时,我的两个打印语句分别得到None
和NULL
。 如何正确地将数组传递到服务器端?
你可以试试下面的代码。 它会起作用。 当您将数组作为参数传递时。 因为 request.args 是 MultiDict 实例
request.args.getlist(Key)
或者您应该尝试将您的数组转换为 Json 并将 json 传递给服务器。 您可以使用以下方法转换json
JSON.stringify()
您可以使用的服务器端
data = request.get_json()
是的,我也无法使用$.getJSON
工作......
这是一个经过测试的$.ajax
解决方案:
<script>
$SCRIPT_ROOT = {{ request.script_root | tojson | safe }};
var x = ["test", "test2"];
function f1(){
$.ajax({
type: "POST",
url: $SCRIPT_ROOT + "/route1",
contentType: "application/json",
dataType: "JSON",
data: JSON.stringify(x)
});
};
</script>
我用这样的按钮触发它:
<button id="testing" name="testing" onclick="f1();">testing</button>
和烧瓶代码:
@bp.route("/route1", methods=['GET', 'POST'])
def route1():
a = request.get_json()
print(a)
return "hello, world"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.