Arrays 通过AJAX post向Flask视图发送整数值数组
假设您在javascript-[1,2,3]中有一个数组,并且希望通过AJAX post将其发送到Flask。 因此,在JS中:Arrays 通过AJAX post向Flask视图发送整数值数组,arrays,ajax,post,flask,serialization,Arrays,Ajax,Post,Flask,Serialization,假设您在javascript-[1,2,3]中有一个数组,并且希望通过AJAX post将其发送到Flask。 因此,在JS中: array = new Array() array.push(1); array.push(2); array.push(3); var data = JSON.stringify(array); $.ajax({ type: "POST", url: "myurl", data: data,
array = new Array()
array.push(1);
array.push(2);
array.push(3);
var data = JSON.stringify(array);
$.ajax({
type: "POST",
url: "myurl",
data: data,
dataType: 'JSON',
success: alert("messagesent!")
})
在我们看来:
@bp.route('myurl',methods=['GET', 'POST'])
def myfunction(address):
if request.method == "POST":
FirstSet = request.form['data']
x = json.loads(FirstSet)
但是,现在我不知道如何访问x list(?)的特定值,因为尝试这样访问它:
print(x[1])
不起作用…提前感谢您查看:)
编辑:
大局:
我会在单击时触发ajax请求,但在我将要发送的所有值附加到要发送的数组之后。看起来是这样的:
$("#firstSet").on("click",function(){
array =[]
$("#myDiv").children().each(function()
{
var star = $(this).children("li.star.selected").length
array.push(star)
})
alert(array)
$.ajax({
type: "POST",
url: "myurl",
data: {"data":array},
success: alert("messagesent!")
})
})
此警报数组不是非类型(我只获取数组值),但我在Flask端收到的是空列表或非类型(取决于我请求它的方式)既然您发送JSON,您应该使用Flask获取具有适当名称的JSON: 然后
FirstSet
将包含:
[1, 2, 3]
还要确保AJAX具有适当的contentType
:
// ...
contentType: "application/json",
dataType: "JSON"
编辑:我将包括所有我正在测试的Javascript/JQuery,以防它对您有所帮助。我将所有内容包装在一个DOM就绪函数中
<script>
$(document).ready(function() {
$("#firstSet").on("click",function(){
array = [];
var listItems = $("#myDiv li");
listItems.each(function(idx, li) {
var star = $(li);
array.push(star.length);
});
alert(array);
$.ajax({
type: "POST",
url: "/testing",
contentType: "application/json",
dataType: "JSON",
data: JSON.stringify(array)
});
});
});
</script>
我按照你的建议做了,但是我的第一个集合是非类型的,所以它不可订阅…你的AJAX是如何触发的?也许你可以为它添加代码,这样我就可以看看是否还有其他问题。我刚刚做了:)我现在尝试以不同的方式发送数据,并且它包含在编辑中(但仍然不起作用)@kikatuso:我用我用来测试这一点的代码更新了我的答案。我希望有帮助。哦,你的URL需要一个前导的
/
,就像我的一样。
<script>
$(document).ready(function() {
$("#firstSet").on("click",function(){
array = [];
var listItems = $("#myDiv li");
listItems.each(function(idx, li) {
var star = $(li);
array.push(star.length);
});
alert(array);
$.ajax({
type: "POST",
url: "/testing",
contentType: "application/json",
dataType: "JSON",
data: JSON.stringify(array)
});
});
});
</script>
<button id="firstSet" name="firstSet">testing</button>
<div id="myDiv" name="myDiv">
<ul id="myList">
<li data-value="1"><a href="#">1</a></li>
<li data-value="2"><a href="#">2</a></li>
<li data-value="3"><a href="#">3</a></li>
</ul>
<input id="listChoice" size="15" name="size" type="text" />
</div>
@bp.route('/testing',methods=["GET","POST",])
def testing():
if request.method == "POST":
print(request.get_json())
return render_template('testing.txt')