[英]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.