問題描述
本想做一個表單驗證來熟悉一下ajax的功能,但是跟着教程敲一樣的代碼,自己的django卻沒法接收到頁面ajax發送的資料,接收到的全是none,一步步調試過,也發現不了問題,後來自己另起一個app寫了一個表單驗證,django卻能收到ajax的資料并傳回data,不知道原先的代碼出什麼問題了,csrf也注釋掉了,還是收不到ajax的資料。
問題出現的環境背景及自己嘗試過哪些方法
已經試過加上{% csrf_token %} 了,沒用,注釋掉了setting.py裡的csrf攔截了。
另外,把自己的代碼和教程做了比對,是一樣的,但是教程用的是django1.8,自己用的是2.0,不知道是不是版本問題?把自己的代碼替換到教程裡面的源碼裡也不行
相關代碼
// 請把代碼文本粘貼到下方(請勿用圖檔代替代碼)
views檔案:
def ajax(request):
ret = {'status':True,'error':None,'data':None}
try:
h = request.POST.get('hostname')
i = request.POST.get('IP')
p = request.POST.get('port')
c = request.POST.get('agent')
print(type(h))
if h and len(h) > 5:
models.Host.objects.create(hostname = h,ip = i, port = p,b_id = c)
else:
ret['status'] = False
ret['error'] = '太短了'
except Exception as e:
ret['status'] = False
ret['error'] = '請求錯誤'
return HttpResponse(json.dumps(ret))
urls.py檔案:
from django.contrib import admin
from django.urls import path,re_path
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('host/',views.host),
re_path('business/',views.business),
path('ajax/',views.ajax),]
html代碼:(
部分)
{% csrf_token %}
主機名:
IP:
端口:
業務線
{% for i in v2 %}
{{i.b__caption}}
{% endfor %}
ajax送出
$(function(){
$('#a1').click(function(){
$.ajax({
url:"/ajax/",
type:'PSOT',
data:$('#add_form').serialize(),
success:function(data){
var obj = JSON.parse(data);
if(obj.status){
location.reload()
}else{
$('#error_msg').text(obj.error)
}
}
})
})
})
你期待的結果是什麼?實際看到的錯誤資訊又是什麼?
需要整個django檔案測試的,希望留下郵箱,請各位大神幫個忙了!