首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Vue异步调用Django视图函数(AJAX)

如何使用Vue异步调用Django视图函数(AJAX)
EN

Stack Overflow用户
提问于 2018-11-08 14:32:06
回答 2查看 1.1K关注 0票数 1

我有一个表单的按钮,而不是提交按钮。我希望Vue在单击该按钮时异步调用Django视图,并返回一条JSON消息,说明function已成功调用。

EN

回答 2

Stack Overflow用户

发布于 2018-11-28 07:12:16

Jquery和Vue在一起不能很好地工作。Vue可以在Jquery中工作,但Jquery不能在Vue中工作。更好的选择是使用Axios for Ajax。在Vue方法中调用axios。

代码语言:javascript
运行
复制
axios.defaults.xsrfCookieName = 'csrftoken' //need this for method:post
axios.defaults.xsrfHeaderName = 'X-CSRFToken' //need this for method:post

var vue_app = new Vue({
  el: '#id_xyz',
  data: {
    vue_var1:'hello',
    vue_var2:[],

  },
  methods:{
    ajax_method_name1:function(){
      console.log('Vue ajax_method_name1 is called');

      axios({
            method: 'post',
            url: 'ajax/url1/',//your customer url that is set in backend to do Ajax work
            data: {
                  axios_var1: this.vue_var1, //data to send to server

                },
            responseType: 'json', //server will response with this datatype
          })

          .then ( function (response){ //success function
              console.log('axios ajax success. data returned ==' + response.data); //if returned data format is like {[ {'id':1,'id':2} ]} we may have to do response.data['output_dict'][0]['id']
              this.vue_var2 = response.data['output_var'];
          }.bind(this)) //bind(this) is required when accessing Vue variable inside Axios success function (.then)

          .catch ( function (error){ //error function
            console.log('Axios ajax error');
          });

    },
  },

  delimiters: ["[[","]]"],
});
票数 1
EN

Stack Overflow用户

发布于 2018-11-13 11:18:56

在这个ARTICLE中,有4种不同的方法可以用Vue做Ajax。

我不能完全理解它。下面是如何使用Jquery完成此操作。

Javascript代码:

代码语言:javascript
运行
复制
$("#id1").blur(function() { //when field with id="id1" loses focus, Ajax happens
  var email_entered = $(this).val();
    $.ajax({
          url: 'ajax/signup_email_verification/',
          type: "POST", //needs csrf token
          data: { email: email_entered,csrfmiddlewaretoken: $("input[name='csrfmiddlewaretoken']").val(), },
          dataType: 'json',

          success: function (data) {
              alert("Ajax successful");
          },
          error: function(error){
            alert("Ajax error");
          },
        });
});

Django代码:

代码语言:javascript
运行
复制
def email_verification(request):
    email=request.POST.get('email'); print('AJAX EMAIL = ',email)
    data={ 'success':True }
    return JsonResponse (data)

HERE是使用普通JS、Jquery、Fetch或Axios实现Ajax的几种首选方式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53202544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档