как отобразить данные в представлении ejs из результирующего набора ajax при вызове в представлении - PullRequest
1 голос
/ 31 мая 2019

у меня есть пустое представление ejs, но я хотел бы отобразить набор результатов вызова ajax, который я вызываю, в представлении ejs

<script>
 // Fetch 
  $.ajax(`/x`).done(function(data, textStatus, xhr){
console.log(data);
console.log(textStatus);
console.log(xhr);      
  });

</script>
<!-- how do i loop the data received from above and display the content here? -->

Я не уверен, как это сделать.

UPDATE

вот что у меня сейчас. Есть ли более аккуратный способ сделать это вместо добавления в качестве HTML?

<script>
  const gId = '<%= gId %>';

  // Fetch the current users c here from `/g/${gId }/c `
  $.ajax(`/g/${gId }/c `).done(function(data, textStatus, xhr){
    var c = '';
    $.each(data, function(index, value){
      console.log(index);
      console.log(value)
      c += '<div class="col-sm-6 col-md-2"><div><img class="col-sm-12 col-md-11" src="'+value.image+'" /></div><div class="text-center"><input name="card" id="card" type="checkbox" value="'+value.value+'" /> Discard</div></div>';
    });

    $('#c ').append('<div class="row"><div class="row col-sm-12">'+c +'</div><div class="col-xs-2"></div></div>');

    $('#c ').append('<button type="submit">c </button>');
  });



  const checkExchangeStatus = function(){
    $.ajax(`/g/${gId}/allExchanged`).done(function(data, textStatus, xhr){
      if (xhr.status !== 202) { // not pending
        document.location = `/g/${gId}/result`;
      }
    })
  }

  setInterval(checkExchangeStatus, 1000);
</script>
<form method="POST" action="/g/<%= gId %>/exchange">
<div id="c ">
</div>
<div>
<br/>gId : <%= gId %>
</div>
</form>

1 Ответ

1 голос
/ 31 мая 2019

"Код ejs, такой как <%%>, выполняется на сервере и отображается как html. Поэтому вы не можете использовать код ejs с запросами ajax."

Что вы можете сделать, это сделать ajax-вызов, а затем изменить свою HTML-страницу с помощью jQuery.

У меня пустое представление ejs, но я хотел бы отобразить набор результатов вызова ajax, который я вызываю, в представлении ejs.

<script>

  $.ajax(`/x`).done(function(data, textStatus, xhr){
    console.log(data); //I am assuming this prints
      $('#someID').html(data);


  });

</script>

Я не знаю, каких результатов вы ожидаете или как выглядит ваш html. Если вы обновите свой вопрос большим количеством кода, я могу помочь вам в дальнейшем.

...