jQuery this find не работает

271
19 сентября 2017, 09:41

Я пытаюсь использовать $(this).find('.class').html('text'), но он не работает (Обратите внимание на комментарий).

$(".form_send").submit(function() { 
  var data = $(this).serialize(); 
  $.ajax({ 
    type: 'POST', 
    url: 'index.php?route=information/contact/send', 
    dataType: 'json', 
    data: data, 
    success: function(data) { 
      if (data.error) { 
        $(this).find('.result').html(data.error); //Не работает 
        $('.form_send .result').html(data.error); //Работает 
      } else { 
        console.log(data); 
      } 
      $('.form_send')[0].reset(); 
    }, 
    error: function(error) { 
      console.log('error; ' + error); 
    } 
  }); 
  return false; 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<form class="tg-themeform tg-contactusform form_send"> 
  <fieldset> 
    <div class="row"> 
      <div class="col-md-6 col-sm-6 col-xs-12"> 
        <div class="form-group"> 
          <input type="text" class="form-control" name="user_name" placeholder="Ваше имя"> 
        </div> 
      </div> 
      <div class="col-md-6 col-sm-6 col-xs-12"> 
        <div class="form-group"> 
          <input type="text" class="form-control" name="user_subject" placeholder="Тема"> 
        </div> 
      </div> 
      <div class="col-md-6 col-sm-6 col-xs-12"> 
        <div class="form-group"> 
          <input type="email" class="form-control" name="user_email" placeholder="Email"> 
        </div> 
      </div> 
      <div class="col-md-6 col-sm-6 col-xs-12"> 
        <div class="form-group"> 
          <input type="text" class="form-control mask" name="user_phone" placeholder="Телефон"> 
        </div> 
      </div> 
      <div class="col-sm-12 col-xs-12"> 
        <div class="form-group"> 
          <textarea name="user_message" placeholder="Сообщение" class="tg-textarea"></textarea> 
        </div> 
      </div> 
      <div class="col-sm-12 col-xs-12"> 
        <button class="tg-btn" type="submit"><span>Отправить</span></button> 
        <div class="result"></div> 
      </div> 
    </div> 
  </fieldset> 
</form>

Ajax работает исправно. Ответ от сервера получаю правильный.

Answer 1

Попробуйте:

$.ajax({ 
    //Ваш код 
    context: this, 
    success: function(data) { 
         // this ссылается на то, что Вы указали в context 
    } 
});

READ ALSO
Как правильно создать объект

Как правильно создать объект

Суть: Пользователь на сайте в форме заполняет данные, примерно такой вид данных на выходе - idUser, date1, date2 (причем он может внести несколько строк,...

204
Неверно работает onclick

Неверно работает onclick

Использую библиотеку higslide, хочу сделать галереюПри клике на изображение оно должно увеличиваться, но скрипт просто открывает изображение...

354