#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
к вашей проверке if2. Добавление:
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
не выдать ошибку.