Arrays 通过AJAX post向Flask视图发送整数值数组

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,

假设您在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,
        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')