簡體   English   中英

使用Ajax將數據從html傳遞到python

[英]Passing data from html to python using ajax

問候大家,我正在嘗試將json數據從html傳遞到python,我正在獲取數據,但格式不正確,

下面是我的代碼

HTML

<select class="js-example-basic-multiple" id="Status" name="Status" multiple="multiple" style="display:inline-block;">
    {% comment %} <option value="ALL" checked="1">ALL</option> {% endcomment %}
    <option value="new">New</option>
    <option value="bid">Bid</option>
    <option value="inprogress">In Progress</option>
    <option value="onhold">On Hold</option>
    <option value="completed">Completed</option>
    <option value="archived">Archived</option>
</select>

JavaScript的

$('#Status').change(function(){
    var selected_status = $('#Status').select2('val');
    var status_text = JSON.stringify(selected_status);
    $.ajax({
            url : '/dashboard/marketing/', // the endpoint
            type : 'GET', // http method
            data : { 'stat' : status_text,
                    'csrfmiddlewaretoken': '{{csrf_token}}'
                }, // data sent with the post request
            // handle a successful response
            success : function(data) {
            },
    });
});

view.py

stat = request.GET.getlist('stat')
    print(stat)
    for selected_status in stat:
        get_project_on_status = Project.objects.all().filter(project_stage=selected_status)
        for project in get_project_on_status:
            project_on_status_list.append(project)

我想要的結果是:

["new","bid","inprogress","onhold","completed"]

但是我得到的是:

['["new","bid","inprogress","onhold","completed"]']

我如何卸下多余的支架? 謝謝!

我對python不太了解,但是您需要確保不使用JSON.stringify對值進行字符串化。

var status_text = selected_status; // Remove JSON.stringify from here

$.ajax({
  url : '/dashboard/marketing/', // the endpoint
  type : 'GET', // http method
  data : { 'stat' : status_text,
           'csrfmiddlewaretoken': '{{csrf_token}}'
         }, // data sent with the post request
  // handle a successful response
  success : function(data) {
  },
...

而且,jQuery自動處理數據的編碼。 因此,提交給服務器的實際參數名稱將為stat[]

我認為您在檢索python端的值時需要將參數名稱更改為stat[] 也許在這一行:

stat = request.GET.getlist('stat[]')

有關如何發送參數的更多詳細信息,請觀察此小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM