Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将数组列表从JavaScript发送到Django视图_Javascript_Python_Arrays_Django - Fatal编程技术网

无法将数组列表从JavaScript发送到Django视图

无法将数组列表从JavaScript发送到Django视图,javascript,python,arrays,django,Javascript,Python,Arrays,Django,我有一个名为tableData的数组。但是每当我执行它时,我都无法在python终端上得到结果。既然我已经把打印(pieFact),它应该把输出打印出来,对吗?除此之外,当我把var data={'test':'2',csrfmiddlewaretoken:'{{{csrf_-token}}}}放进去,我实际上可以在终端中获得2输出,但在我放入'test':tableData时无法获得数组。有人能告诉我我做错了什么吗?谢谢 网址 Javascript <script> //decla

我有一个名为
tableData
的数组。但是每当我执行它时,我都无法在python终端上得到结果。既然我已经把
打印(pieFact)
,它应该把输出打印出来,对吗?除此之外,当我把
var data={'test':'2',csrfmiddlewaretoken:'{{{csrf_-token}}}}放进去
,我实际上可以在终端中获得
2
输出,但在我放入
'test':tableData
时无法获得数组。有人能告诉我我做错了什么吗?谢谢

网址

Javascript

<script>
//declare the array as a global
var tableData = [];
var URL="{% url 'test' %}"

$(document).ready(function () {
  $(".button").on("click", function () {
    para = document.getElementById("Parameter").value;
    condi = document.getElementById("Condition").value;
    value2match = document.getElementById("valuetomatch").value;

    if (para && condi && value2match !== null) {
      var table = document.getElementById("myTable");
      var row = table.insertRow(-1);
      var cell1 = row.insertCell(0);
      var cell2 = row.insertCell(1);
      var cell3 = row.insertCell(2);
      var cell4 = row.insertCell(3);

      cell1.innerHTML = document.getElementById("Parameter").value;
      cell2.innerHTML = document.getElementById("Condition").value;
      cell3.innerHTML = document.getElementById("valuetomatch").value;
      cell4.innerHTML =
        '<button  class = "del_img "onClick="delSpec(this)"><img src="deleteimg.png" width="30" height="30"></button> </div>';

      var myTab = document.getElementById("myTable");

      // Only add the new row:
      tableData.push([
        document.getElementById("Parameter").value,
        document.getElementById("Condition").value,
        document.getElementById("valuetomatch").value
      ]);

      modal.style.display = "none";
    } else {
      alert("All the input box cannot be empty!");
    }
  });

document.getElementById("buttonSubmit").onclick = function () {
        alert(tableData);
        var data = {'test': '2', csrfmiddlewaretoken: '{{ csrf_token }}'};
        $.post(URL, data);

      };
});
</script>
它总是返回
None


将javascript数组对象传递给请求时可能会遇到问题

在将其传递给post请求之前,可能会尝试将其转换为json:

var tableDataJson=JSON.stringify(tableData);

所以我想在发送之前,我需要先将数组
tableData
更改为json。 我通过使用
JSON.stringify(tableData)
解决了这个问题

JavaScript:

document.getElementById("buttonSubmit").onclick = function () {
        alert(tableData);

        var data = {'data[]': JSON.stringify(tableData), csrfmiddlewaretoken: '{{ csrf_token }}'};
        $.post(URL, data);



      };
});

View.py


def send(request):
    arr = request.POST.get('test')
    print(type(arr))
    print(arr)
    return render(request, 'DemoApp/hi.html')

def send(request):
    
    arr = request.POST.getlist('data[]', None)
    print(type(arr))
    print(arr)
    return render(request, 'DemoApp/hi.html')


在终端输出中,在get请求和post请求之后打印变量是正常的吗?是否也可以提供url设置?@blondlg是,这不会导致问题。因为当我将tableData更改为
2
时,我可以获得
2
输出。我已经更新了上面的URL设置。tqI只需在你发表评论之前解决它,哈哈。但还是要感谢你的回应!回复总是在发布后提交,所以,无论如何感谢您的支持。目前我获得的值为<代码>['[[“主题”,“相等”,“测试”],[“文本”,“包含”,“测试1 2 3”].]。你知道我怎样才能使它成为
{[1,2,3],[4,5,6]}
?因此,我可以使用
len(arr)
计算json中有多少值,我需要在这个主题上花费更多的时间,但我认为您可以看看前端发送的内容,以接收服务器端预期的内容。您有
tableData
的打印件吗?让我们看看。

def send(request):
    
    arr = request.POST.getlist('data[]', None)
    print(type(arr))
    print(arr)
    return render(request, 'DemoApp/hi.html')