Не удается прочитать свойство ‘name’ нулевой ошибки в форме PHP / Vue JS

#javascript #php #html #vue.js #vuejs2

#javascript #php #HTML #vue.js #vuejs2

Вопрос:

Я перепроектирую существующую форму заявки в Vue JS, которая взаимодействует и публикуется через PHP. Форма содержит большое количество полей, большинство из которых содержат HTML-идентификатор чего-либо. У меня есть ряд методов Vue JS, один из которых анализирует данные формы Vue JS, а затем отправляет их через HTTP POST-запрос. Я получаю ошибку с частью кода, которая, похоже, думает, что моя element.name является null .

Я не писал код, а просто отлаживаю и пытаюсь это исправить.

Я попытался записать свои данные в консоль, и, похоже, я действительно получаю null значение, я пытаюсь выяснить, может ли мне понадобиться объявить var или let перед моей element переменной, которая возвращает некоторое свойство.

Метод, о котором идет речь, вызывающий ошибку, которая вызывается при отправке формы, указан ниже:

 /**
         * Parse Form Data
         * @return {object}
         */
        parseFormData: function parseFormData() {

          console.log('Data ->'   data)

          expanded = ''
          data = this.formData
          ignore = [
            'AddressSelection', 'NextPaydateDay', 'NextPaydateMonth',
            'NextPaydateYear', 'AskDebtsQuestion', 'loanreason',
            'loanreason-select', 'PersonalDebtQuestion'
          ]
          for (property in data) {
            if (ignore.includes(property)) continue // skips
            element = document.getElementById(property)
            console.log('Element ->'   element)
            switch (property) {
              case 'AppLoanPurposeOther':
                expanded  = 'data[ApplicationPayday][AppLoanPurposeOther]='   this.formData.AppLoanPurposeOther
                break;
              case 'EmpEmployerName':
                expanded  = 'data[ApplicationPayday][EmpEmployerName]='   this.formData.EmpEmployerName
                break;
              case 'EmpEmployedYears':
                expanded  = 'data[ApplicationPayday][EmpEmployedYears]='   this.formData.EmpEmployedYears
                break;
              case 'EmpEmployedMonths':
                expanded  = 'data[ApplicationPayday][EmpEmployedMonths]=0'
                break;
              case 'EmpIndustry':
                expanded  = 'data[ApplicationPayday][EmpIndustry]='   this.formData.EmpIndustry
                break;
              case 'CheckDebtAdviceTeam':
                expanded  = 'data[ApplicationPayday][CheckDebtAdviceTeam]='   this.formData.CheckDebtAdviceTeam
                break;
              case 'AppWorkPhone':
                expanded  = 'data[ApplicationPayday][AppWorkPhone]='   this.formData.AppMobilePhone
                break;
              case 'AppHomePhone':data[ApplicationPayday][CheckDebtAdviceTeam]
                expanded  = 'data[ApplicationPayday][AppHomePhone]='   this.formData.AppMobilePhone
                break;
              case 'CheckDebtAdviceTeam':
                expanded  = 'data[ApplicationPayday][CheckDebtAdviceTeam]='   this.formData.CheckDebtAdviceTeam
                break;
              case 'CheckPhoneContract':
                expanded  = 'data[ApplicationPayday][CheckPhoneContract]='   this.formData.CheckPhoneContract
                break;
              case 'BankSortcode':
                expanded  = 'data[ApplicationPayday][BankSortcode]='   this.formData.BankSortcode.replace(/-/g , '')
                break;
              default:
                if (element.name === '') continue
                console.log('Element Name ->'   element.name)
                var string =
                expanded  = element.name   '='   data[property]
            }
            expanded  = 'amp;'
          }
          expanded = encodeURIComponent(expanded.substring(0, expanded.length - 1))
          expanded = expanded.replace(/%3D/g , '=')
          expanded = expanded.replace(/%26/g , 'amp;')
          expanded = expanded.replace(/%20/g , ' ')

          return expanded
        }
  

Ожидаемый результат не должен давать мне null значение, ошибка появляется на:

if (element.name == '') continue

Ошибка в консоли показывает:

введите описание изображения здесь

tlp_aff_id передается в URL через: ?aff_id=something и это работает, оно указано в моих данных как:

tlp_aff_id: '<?php echo urldecode($params['aff_id']) ?>'

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

1. element.name === '' явно проверяет наличие пустой строки и не допускает никаких похожих значений. Попробуйте двойное равенство вместо тройного или добавьте element == null к вашей проверке if

2. Добавление: if (element.name === '' amp;amp; typeof element == null) continue просто возвращает ту же ошибку, а изменение === на == также возвращает ту же ошибку :/

3. По какой-то причине document.getElementById(property) есть null , и так происходит element из-за этого. Вы можете добавить эту строку if(!element) continue перед switch оператором

4.@RyanHolton Проверьте typeof сначала

5. Извините, я удалил typeof из своего комментария. Понял, что это только для undefined . И после тестирования element.name == '' не будет соответствовать нулю. Попробуйте element == null || element.name == '' . Сначала проверьте наличие null, чтобы element.name не выдать ошибку.