Запуск некоторого кода Ajax дал неопределенное значение в консоли - PullRequest
0 голосов
/ 31 августа 2018

У меня есть проект градации для создания лучшего веб-сайта для обработки регистрации студентов.

Я следовал плейлисту YouTube, чтобы узнать больше о node.js и других пакетах, поэтому, когда я запускаю этот код, я получаю неопределенное значение, есть идеи, почему?

$(document).ready(function(){
  $('.delete-student').on('click', function(e){
    $target = $(e.target);
    const id = $target.attr('data-id');
    $.ajax({
      type:'DELETE',
      url: '/students/'+id,
      success: function(response){
        alert('Deleting Student');
        window.location.href='/';
      },
      error: function(err){
        console.log(err);
      }
    });
  });
});

Error

error

Код PUG:

extends layout

block content
h1= student.first_name + " " + student.last_name
hr

.container
    h4 More infomation:
    ul.list-group
        li.list-group-item  First name    : #{student.first_name}
        li.list-group-item  Last name     : #{student.last_name}
        li.list-group-item  Parents Email : #{student.parentEmail}
        li.list-group-item  School        : #{student.school}

hr
h5 School : #{student.school}
hr 
a.btn.btn-default(href='/student/edit/'+student._id) Edit
a.btn.btn-danger.delete-student(href='#',data.id=student._id) Delete

1 Ответ

0 голосов
/ 31 августа 2018

Обновление и "реальный" ответ & торговля;

Атрибуты PUG интерпретируются как есть, а не

(href='#',data.id=student._id)

у вас должно быть

(href='#',data-id=student._id)

Предполагая, что ваш элемент .delete-student такой же, имеющий data-id="...", измените ваш код на

$target = $(this)

jQuery автоматически связывает элемент, обрабатывающий связанное событие, с лексической областью действия обработчика события, т.е. this.

Возможно, вы даже захотите изменить селектор на

$('.delete-student[data-id]')

, чтобы обеспечить наличие обязательного атрибута.


Проблема с использованием event.target заключается в том, что если событие возникло дальше по иерархии документа, event.target ссылается на первоначально выбранный элемент.

Рассмотрим эту структуру

<button class="i-really-want-clicks-on-me" data-id="required">
  <span>I'm the label</span>
</button>

Если вы связываете обработчик событий с <button>, но нажимаете на <span>, event.target будет <span>.

...