Сообщение Vuejs возвращает данные JSON, но не присваивает объекту данных Vues - PullRequest
0 голосов
/ 07 сентября 2018

Эй, ребята, я использую vuejs и ajax для отправки formData и возврата ответа json. Там приходит ответ json, хотя я не могу присвоить его объекту данных vue. Есть идеи, почему? Вот мой метод. Я знаю, что функция запускается, когда она попадает на другую страницу и возвращает данные json в консоли. Сообщение, nameExists и ошибка не будут назначаться, даже если все наши свойства vue data записаны правильно.

addTemplate: function() {
  this.sub = true;
  this.itemName = this.itemName.trim();
  var addTemplateForm = document.getElementById("addTemplateForm");
  var fd = new FormData(addTemplateForm);
  if (this.validItemName == true /* etc...*/) {
    $.ajax({
      url:'addTemplateBackend.php',
      type:'POST',
      dataType: 'json',
      data: fd,
      contentType: false,       // The content type used when sending data to the server.
      cache: false,             // To unable request pages to be cached
      processData:false,        // To send DOMDocument or non processed data file it is set to false
      error: function(data){
        this.message = data.message;
        alert('error');
      },
      success: function(data){
        alert('success');
        this.error = data.error;
        this.message = data.message;
        console.log(data);
        this.nameExists = data.nameExists;
        if(data.success == true){
          $('#successModal').modal('show');
        }
      }
    });
  }
}

1 Ответ

0 голосов
/ 08 сентября 2018

Вам необходимо либо связать this:

success: function (data) {
  this.message = data.message;
}.bind(this)

, либо использовать синтаксис "жирной стрелки" ES6:

success: data => {
  this.message = data.message;
}

См. Как работает ключевое слово "this"работа .

...