jquery 如何在Django中使用Ajax将HTML元素值发布到MySQL数据库(不使用Form)

gywdnpxw  于 5个月前  发布在  jQuery
关注(0)|答案(1)|浏览(76)

我是Django的新手,目前面临着将HTML标签数据发布到数据库中的问题。
我有一个“选择案例”按钮,点击应发送用户ID(隐藏的HTML标签显示:无)和案例ID从HTML标签,并将其发送到“选择视图”的意见,并从那里它应该存储在MySQL数据库中的数据。
作为参考,请找到所附的图像。Case view

tables.html

<div class="containers pt-5 pb-3 px-4 py-4">
                  <input type='hidden' name='csrfmiddlewaretoken' value='{{ csrf_token }}' /> 
                    <div class="d-none">
                      <p>User ID: </p><p class="user-id">{{id}}</p>
                    </div>
                    <h3>Case Number:</h3><h2 id="number"></h2>
                    <h4>Description:</h4>
                    <p class="mb-5" id="display"></p>
                    <div class="button d-inline-block" style="max-width: 50%;">
                      <button type="submit" id="pick" class=" pick-button btn btn-outline-primary border-radius-lg p-3">Pick Case</button>
                    </div>
                    <div class="d-inline-block float-lg-end" style="max-width: 50%;">
                      <button class="btn btn-outline-danger border-radius-lg p-3">Close</button>
                    </div>
                </div>
<script>
$("#pick").click(function(){
        var user = $('.user-id').text();
        var ca = $('#number').text();
        ca = $.trim(ca);
        $.ajax({
          type:"POST",
          url:"{% url 'dashboard:pick_case' %}",
          data:{
            user_id:user,
            case_id:ca,
            csrfmiddlewaretoken: '{{ csrf_token }}'
          },
          success:function(data){
            alert(data);
          }
        });
      });
</script>

字符串

视图.py

def pick_view(request):
    if request.method == 'POST':
        case_id = request.POST.get('case_id')
        print(case_id)
        status = 2
        picked = Transaction()
        picked.Case_ID = case_id
        picked.Status = status
        picked.save()
        return HttpResponse("Case Picked Successfuly!")
    else:
        return HttpResponse("POST ERROR")

url.py

urlpatterns = [
    path('dashboard', views.dashboard_view, name='dashboard_view'),
    path('tables', views.case_view, name='case_view'),
    path('tables', views.pick_view, name='pick_case'),
]

models.py

class Transaction(models.Model): ### Case Progress Table
    Case_ID = models.ForeignKey(CaseTable, on_delete=models.CASCADE)
    Status = models.ForeignKey(Status, on_delete=models.CASCADE)
    Date_Time = models.DateTimeField(default=timezone.now)


运行以下代码后

success:function(data){
            alert(data);
          }


我得到以下输出:Output for the alert所以很明显,我不能在apache中传递“user”和“ca”的值。
请帮帮忙!

lqfhib0f

lqfhib0f1#

显然你可以使用JsonResponse代替HTTPResponse,它会更干净,更容易读取和操作返回的数据。

def pick_view(request):
    context={}
    if request.method == 'POST':
        try:
            case_id = request.POST.get('case_id')
            print(case_id)
            status = 2
            picked = Transaction()
            picked.Case_ID = case_id
            picked.Status = status
            picked.save()
            context.update({'response':'Case Picked Successfuly!'})
        except Exception as e:
            context.update({'response':'POST ERROR : ' + str(e)})
    
    return JsonResponse(data=context)

字符串
然后,在您的目录中,您可以使用alert(data.response);访问返回的数据
另外,请在处理错误时始终使用try except块,这样它就不会在运行时中断程序。

相关问题