[Vue warn]: Ошибка в обработчике v-on: «SyntaxError: Неожиданный токен в JSON в позиции 76» - PullRequest
0 голосов
/ 03 августа 2020

Пока я пытаюсь добавить эти JSON данные в базу данных, это дает мне указанную выше ошибку!

var tax_setting = '{ "total_tax_settings":  { "charge_tax": ' + this.taxInfoRadioButton + 
    ', "tax_settings" : [' +
    '{ "tax_name": ' + this.taxName + 
    ', "tax_rate": ' + this.taxRate +
    ', "tax_included_in_price": ' + this.taxIncludeInPrice + ' } ]}}';

Радиокнопка этого JSON:

<v-radio-group v-model="taxInfoRadioButton">
    <v-radio color="primary" label="Do not charge tax on purchases" value="1"></v-radio>
    <v-radio color="primary" label="Charge tax on purchase" value="2"></v-radio>
</v-radio-group>

data() {
  return {
     taxInfoRadioButton: '1'
  }
}

Текстовое поле:

<v-text-field name="taxName" label="Tax Name" id="taxName" v-model="taxName"></v-text-field>
data() {
  return {
     taxName: ''
  }
}

Ставка налога такая же, как указано выше.

Выберите вариант в JSON:

<v-select  hide-details v-bind:items="willTaxInclude"  v-model="taxIncludeInPrice"  label="Select"  single-line  menu-props="bottom" ></v-select>
data() {
  return {
     willTaxInclude: [
        { text: "Yes", value: 1 },
    { text: "No", value: 0 }
    ],
    taxIncludeInPrice: '0',
  }
}

Разберите его в формате JSON :

var tax_setting = JSON.parse(tax_setting);

Я передаю эти данные в базу данных, используя axios

axios.post('/api/data/user/save-business-settings', {
    tax_setting: tax_setting,
}).then((res) => {
    console.log(res);
}).catch((err) => {
    console.log(err);
})

В чем проблема, я не могу понять На самом деле. Пожалуйста, помогите мне.

1 Ответ

1 голос
/ 04 августа 2020

Правило №1, которое следует учитывать при работе с JSON: лучше всего создать, сначала создав объект, который вы хотите сериализовать, а затем передав его в JSON.stringify(). Поскольку вы используете Ax ios, вам даже не нужно этого делать, поскольку Ax ios делает это за вас; вы просто передаете ему объект, который хотите POSTED.

const tax_setting = {
  total_tax_settings: {
    charge_tax: this.taxInfoRadioButton,
    tax_settings: [{
      tax_name: this.taxName,
      tax_rate: this.taxRate,
      tax_included_in_price: this.taxIncludeInPrice
    }]
  }
}

axios.post('/api/data/user/save-business-settings', { tax_setting })
  .then(...)
...