【问题标题】:how to use hashtag regex with ajax?如何在 ajax 中使用主题标签正则表达式?
【发布时间】:2020-06-16 16:02:09
【问题描述】:

我已经在它工作的 base.html 中做了一个标签。就像如果有人用 #something 键入内容,它将被 html 中的 javascript 替换为带有链接的内容。它正在处理帖子列表。所以我想在 cmets 上工作。但是 cmets 有 ajax 方法,这就是它在 cmets 中不起作用的原因。我们可以同时保留它们吗(AJAX 和 Hashtag)。

我的 base.html:

$(document).ready(function() {
      $("p").each(function(data) {
        var strText = $(this).html();
        console.log('1. strText=', strText);
        var arrElems = strText.match(/@[a-zA-Z0-9]+/g);
        console.log('arrElems=', arrElems);
        $.each(arrElems, function(index, value){
            strText = strText.toString().replace(value, '<a href="/user/'+value.replace('@', '')+'">'+value+'</a>');
        });
        console.log('2. strText=', strText);
        $(this).html(strText);
      });
    });
   (#the ajax method for comments)
$(document).on('submit', '.comment-form', function(event){
       event.preventDefault();
       console.log($(this).serialize());
        $("p").each(function(data) {
        var strText = $(this).html();
        console.log('1. strText=', strText);
        var arrElems = strText.match(/@[a-zA-Z0-9]+/g);
        console.log('arrElems=', arrElems);
        $.each(arrElems, function(index, value){
            strText = strText.toString().replace(value, '<a href="/user/'+value.replace('@', '')+'">'+value+'</a>');
        });
        console.log('2. strText=', strText);
        $(this).html(strText);
      });
    });
       $.ajax({
          type: 'POST',
          url: $(this).attr('action'),
          cache: false,
          data: $(this).serialize(),
          dataType: 'Json',
          success: function(response) {
            $('.main-comment-section').html(response['form']);
            $('textarea').val('');
            $('.reply-btn').click(function() {
               $(this).parent().parent().next('.replied-comments').fadeToggle()
               $('textarea').val('');
            });
          },
          error: function(rs, e) {
            console.log(rs.responseText)
          },

       });
    });

我的 cmets.html:

<form method="post" enctype="multipart/form-data" class="comment-form" action=".">
{% csrf_token %}
{{ comment_form.as_p }}
<input type="submit" value="submit" class="btn-btn-outline-success">
</form>
<div class="container">
    {{ comments.count }} comment{{ comments|pluralize }}
    {% for comment in comments %}
    <blockquote class="blockquote">
      <p class="mb-0">{{ comment.content }}</p>
        <div class="options">
          {% if comment.user == user %}
          <a href="{% url 'comment-delete' pk=comment.pk %}">delete</a>
          {% endif %}
        </div>
      <footer class="blockquote-footer">by <cite title="Source Title">{{ comment.user }}</cite>
        <button type="button" name="button" class="reply-btn btn btn-outline-dark btn-sm">reply</button> 

      </footer>
</blockquote>
<div class="replied-comments container mt-2" style="display:none;">
    {% for reply in comment.replies.all %}
    <blockquote class="blockquote">
      <p class="mb-0"><small>{{ reply.content }}</small></p>
      <footer class="blockquote-footer"><small>by <cite title="Source Title">{{ reply.user }}</cite></small></footer>
    </blockquote>
    {% endfor %}
    <div class="form-group-row">
        <form method="post" class="reply-form" action="." enctype='multipart/form-data'>
             {% csrf_token %}
             <input type="hidden" name="comment_id" value="{{ comment.id }}">
             {{ comment_form.as_p }}
             <input type="submit" value="submit" class="btn-btn-outline-success">
         </form>
    </div>
</div>
{% endfor %}

ajax 方法引发错误,例如 ajax 不起作用,主题标签不起作用。

【问题讨论】:

    标签: javascript django ajax django-forms ajaxform


    【解决方案1】:

    我只需要将脚本放入 cmets.html 而不是 base.html。

    【讨论】:

      猜你喜欢
      • 2015-11-25
      • 1970-01-01
      • 2021-02-17
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-04
      相关资源
      最近更新 更多