javascript - 发布和获取相同的 jquery 请求

标签 javascript jquery ajax django

在我的 Django 应用程序中,我希望能够发布和获取相同的 jQuery 请求。

我的 HTML:

    <form  method="post" id='validation_form'>
    {% csrf_token %}
        <input id='username' type="text" name="username" value=""/>
        <button type="submit">Submit</button>
    </form>

JS:

   var username = $('#username').val()
   $.post('/auth_validate', {'username': username}, function(data) { 
   // Get Request to get something.
   }

观点:

   def auth_validate(request):
       error = False
       if request.method == 'POST':
           username = request.POST.get('username')

           if User.objects.filter(username__exact=username).exists():
               error = 'Sorry this username is already taken'

我想在我以前发布的同一个 jQuery 请求中得到“错误”。有可能吗?

感谢您的帮助。

编辑:这是我找到的解决方案。

JS:

  function validateForm() {
    var username = $('#username').val()
    var result=''
    $.get('/auth_validate_username/', {'result':result}, function(data){
       $.post('/auth_validate_username/', {'username': username}, function(data) { 
       $('#error_message').html(data); 
      });
    });
    return false;
    };

html:

   <form  method="post" onsubmit="return validateForm();">
    {% csrf_token %}
        <input id='username' type="text" name="username" value=""/>
        <div id='error_message'></div>
        <button type="submit">Submit</button>
    </form>

观看次数:

    def auth_validate_username(request):
       result = ''
       if request.method == 'POST':
          username = request.POST.get('username')
          if User.objects.filter(username=username):
             result='Sorry but this name is already taken'

    return HttpResponse(result)

这样我首先发布值用户名。如果用户名已经存在,结果会发生变化,然后我会得到它。

诀窍是将 post 请求放在 get 请求中。

最佳答案

不使用 $.post,而是使用 $.ajax 命令。它们做的事情完全相同,但 $.ajax 为您提供了更多功能。

$.ajax({
  type: 'POST',
  url: "/auth_validate",
  data: {
    'username': username
  },
  success: function(data){
    //There was successfully data here!
  },
  error: function(xhr, data, error){
    //An error was thrown!
  }
});

然后在该行的正上方添加一行将返回 403(或类似的)HTTP 错误代码(我会提供它,但我不熟悉 Django 的来龙去脉):

error = 'Sorry this username is already taken'

这样,您成功的消息将通过成功处理程序路由,而您的错误将通过错误处理程序路由。

关于javascript - 发布和获取相同的 jquery 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13955811/

相关文章:

javascript - WebStorm Node 调试显式关闭错误

javascript - style.top 在 JS、内联 CSS 和 getBoundingClientRect 之间不一致

javascript - 替换 .click() 上的按钮?

asp.net - 一个更新面板更新,另一个也更新?

javascript - 如何从html内容中获取div文本

javascript - 通过函数禁用 AJAX 内容加载

javascript - 在 html 中使用 javascript 日期变量链接

javascript - 数组中未知大小的字符串数组

jquery - 从远程域检索 JSON,jQuery

jquery - Facebook Graph API 使用 Ajax 获取 JSON