Django在同一個檢視中要處理ajax請求遇到的一些坑
阿新 • • 發佈:2018-12-11
在寫專案中遇到的一些ajax的坑,在這裡做一下記錄
一、先放一個完整的前,後端示例
$("#bTinvite").click(function(){ inviTtemail = $("#invitefriends").val(); // alert(inviTtemail); $.ajax({ 'url':'/workbench/', 'type':'post', 'data':{'inviTemail':inviTtemail}, // 後端返回到前端值的格式 'datatype':'json', // ajax 預設'async': 'true'非同步處理 'async': 'true', success:(function(data){ if (data.res == 1){ alert('傳送成功'); // 跳轉頁面 window.location.href='/workbench/'; } else{ alert('請輸入正確的郵箱'); }; }) }) });
views的ajax接受方法 if request.is_ajax(): role = request.POST['id'] message = Personas(role=role) message.save() return else: #查詢出role名稱 personas = Personas.objects() role_list = [] role_dict = {} for i in personas: roles = i.role role_list.append(roles) #生成字典型別資料 num = 'a' for i in range(0,len(role_list)): role_dict[str(num)]=role_list[i] num+='a' result = information_show(request) return render(request, 'created.html',role_dict)
二、button,type = "submit" 和 Ajax 不能同時使用,否則Ajax呼叫不成功
button按鈕的type屬性的預設值是submit,有提交form表單的功能。換成span標籤可行,但是還要改樣式,直接更改button的type為button
<button>點我提交</button> → <button type="button">點我提交</button>
三、在一個檢視中如果要同時存在GET,POST,Ajax處理
def workbench(request): if request.method == 'GET': ... #要注意Ajax處理要放在中間 if request.is_ajax(): ... return JsonResponse({'res':'建立使用者畫像成功'}) if request.method == 'POST': ...