Почему моя функция ajax не может добавить html к целевому элементу div?

#javascript #jquery #html #css #ajax

#javascript #jquery #HTML #css #ajax

Вопрос:

Я отправляю html-форму через AJAX, а затем добавляю результаты к определенному элементу div.Соответствующий ajax :-

 $(document).ready(function(){
$('.commentbutton').click(function(){
    var idb=$(this).attr('id');
    var formid=$('#Comment' idb);
    datab=getFormData(formid);
    $.ajax({
        type:"POST",
        url:'/submit/channelcomment',
        data:datab,
        success:function(data){
          console.log(data.content);
          console.log(data.profile);
          var html="<div class='CommentRow'><a href='/Channel/" data.profile "/'style='font-weight: bolder;margin-right: 10px;display: inline-block;'>" data.profile "</a>" data.content "</div>"
          console.log('Done');
          idt=$('#CommentBody' idb);
          console.log(idt);
          idt.append(html);
        },

    }),
    event.preventDefault();
});
  });
  function getFormData($form){
var unindexed_array = $form.serializeArray();
var indexed_array = {};

    $.map(unindexed_array, function(n, i){
    indexed_array[n['name']] = n['value'];
    });

return indexed_array;
}
  

Желаемая позиция, в которой я пытаюсь добавить html, выглядит следующим образом:-

 <div class="CommentBody" id="CommentBody{{c.id}}">
</div>
  

Здесь c.id и idb равно 1. Но это не добавление html.

Ответ №1:

Когда вы говорите

Но это не добавление html.

Каково фактическое поведение?

Я попробовал фиктивный код, как показано ниже, и он работает нормально.

 $(document).ready(function() {
  $('.commentbutton').click(function() {
    var html = "<div class='CommentRow'><a href='/Channel/data.profile/'style='font-weight: bolder;margin-right: 10px;display: inline-block;'>data.profile</a>data.content</div>"
    var idb = '1';
    idt = $('#CommentBody'   idb);
    alert(idt);
    idt.append(html);
  });
});  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class='commentbutton'>Comment</button>
<div class="CommentBody" id="CommentBody1">
</div>  

Комментарии:

1. Здесь data.content — это ответ json, возвращаемый сервером через ajax. Но я не думаю, что ваш html покажет этот ответ. Вместо этого он покажет «data.content», а не значение «data.content

2. Правильно.. Я только что ввел фиктивные значения-заполнители в свой ответ, чтобы показать, что он добавляется к <div> . Вы всегда можете заменить фиктивные данные реальными данными.