首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ajax - Ajax代码不执行

ajax - Ajax代码不执行
EN

Stack Overflow用户
提问于 2016-12-30 04:10:19
回答 3查看 63关注 0票数 0

我正在学习Ajax,我遇到了一个小问题。

我正在尝试使用ajax向django后端提交POST请求。即使是警报也不会显示在屏幕上。正如我在测试django服务器shell中看到的,它甚至不提交POST请求。

代码:

代码语言:javascript
复制
<script type="text/javascript">
    $('#btnLike').on('click', function(event) {
     alert('ok');

      $.ajax({
       type: 'POST',
        url: 'http://127.0.0.1:8000/backend/website/like', /* for testig */
        data: {
         csrfmiddlewaretoken: {% csrf_token %},
         post_id = $('#post_id').val(),
         },
       });
      });
</script>

HTML表单:

代码语言:javascript
复制
<form onsubmit="return false">
 {% csrf_token %}
 <input type="text" name="post_id" value= {{post.pk}} hidden="hidden">
 <button type="submit" name="btnLike" class="btn btn-info">Like</button>
</form>

我知道我做错了什么,但我不知道是什么。

EN

回答 3

Stack Overflow用户

发布于 2016-12-30 04:13:16

您的选择器$('#btnLike')不正确,它正在查找带有id="btnLike"的按钮。

试试这个:

代码语言:javascript
复制
<button type="submit" id="btnLike" class="btn btn-info">Like</button>

请确保在HTML中加载jQuery库,并将所有jQuery代码包装到

代码语言:javascript
复制
$(document).ready(function(){ 
    //your code goes here
 });
票数 1
EN

Stack Overflow用户

发布于 2016-12-30 04:28:14

问题出在您的url值上。删除ip地址。使用相对寻址。还要把id放在你的按钮上。

代码语言:javascript
复制
$('#btnLike').on('click', function(event) {
 alert('ok');

  $.ajax({
   type: 'POST',
    url: 'backend/website/like', /* for testig */
    data: {
     csrfmiddlewaretoken: {% csrf_token %},
     post_id = $('#post_id').val(),
     },
   });
  });

按钮HTML

代码语言:javascript
复制
<form onsubmit="return false">
 {% csrf_token %}
 <input type="text" name="post_id" value= {{post.pk}} hidden="hidden">
 <button type="submit" id="btnLike" class="btn btn-info">Like</button>
</form>
票数 0
EN

Stack Overflow用户

发布于 2016-12-30 15:18:53

作为参考:如果要序列化表单(根据yts的注释),则不需要在AJAX代码中显式包含csrf_token。但是如果你只使用AJAX,那么就像这样传入令牌:

代码语言:javascript
复制
csrfmiddlewaretoken: '{{ csrf_token }}',

代码语言:javascript
复制
csrfmiddlewaretoken: '{% csrf_token %}',

模板变量{{ csrf_token }}输出令牌字符串,例如。

代码语言:javascript
复制
'mytoken123456789'

而标记{% csrf_token %}输出一个隐藏的HTML input元素:

代码语言:javascript
复制
<input type="hidden" name='csrfmiddlewaretoken' value='mytoken123456789' />

您在上面的注释中提到的语法错误是因为它试图解析此输入元素,而不是令牌字符串。

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

https://stackoverflow.com/questions/41386525

复制
相关文章

相似问题

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