Сообщение Vue JS HTTP с кодом состояния API 0 перенаправляет на вопросительный знак

У меня возникли проблемы с HTTP-сообщением в моем собственном API.

сценарий

У меня есть форма сборки в компоненте Vue. Форма для запроса ценового предложения.

Всякий раз, когда сообщение проходит, я хочу перенаправить веб-приложение на URL благодарности. Локально форма отправляет штраф и перенаправляет на правильный URL.

На сервере я получаю код состояния HTTP 0 без текста состояния в javascript. Итак .then() функция полностью игнорируется. Почтовый запрос, однако, проходит полностью. Я отправляю электронное письмо прямо перед тем, как вернуть JSON на почту. И это электронное письмо отправляет отлично.

Проблема сейчас в том, что может пойти не так!

Что я пробовал

  • изменяя .then() в .done()
  • только отправка электронной почты без вставки всей красноречивой базы данных. все работало локально но не на сервере.

Код

Код моей функции контроллера (создание делает строки в базе данных):

    public function send(Request $request)
{
$this->validate($request, [
'companyname' => 'required',
'address'     => 'required',
'address2'    => 'required',
'postalcode'  => 'required',
'city'        => 'required',
'country'     => 'required',
'initials'    => 'required',
'lastname'    => 'required',
'email'       => 'required',
'telephone'   => 'required',
]);

$quotation = Quotation::create([
'company_name' => $request->companyname,
'address'      => $request->address,
'address2'     => $request->address2,
'city'         => $request->city,
'country'      => $request->country,
'postalcode'  => $request->postalcode,
'debtor_code'  => $request->debtor_code,
'gender'       => $request->gender == 'male' ? 'M' : 'F',
'initials'     => $request->initials,
'firstname'    => $request->firstname,
'lastname'     => $request->lastname,
'email'        => $request->email,
'telephone'    => $request->telephone,
'vat'          => $request->vat ?: null
]);$attachments = collect();

collect($request->json('products'))->each(function ($data) use ($quotation, $attachments) {
$product = $quotation->products()->create([
'quotation_id'         => $quotation->id,
'description'          => $data['description'],
'house_formulation'    => $data['formulation_type'] == "house_formulation" ? true : false,
'own_formulation'      => $data['formulation_type'] == "own_formulation" ? true : false,
'formulation_text'     => $data['formulation'],
'product_kind'         => $data['product_kind'],
'packaging_kind'       => $data['packaging_kind'],
'packaging_content'    => $data['packaging_content'],
'product_quantity'     => $data['product_quantity'],
'delivery_time'        => $data['delivery_time'],
'remarks'              => $data['remarks']
]);

$formulationBlob = base64_decode(substr(strstr($data['formulation_document'], ','), 1));
$product->setDocument($data['formulation_filename'], $formulationBlob);

if($data['formulation_document']){
$attachments->push([
'product'   =>  $product->id,
'file'      =>  asset("storage/{$product->document->path}"),
'options' => []
]);
}
});

Mail::to('[email protected]')->send(new QuotationRequest($quotation, $attachments));

return response()->json([
'status' => 'OK',
], 200);
}

Код поста vue-ресурса:

submitRequest() {
this.$http.post('/quotation-request', {
products: this.products,
debtor_code: this.debtor_code,
address: this.address,
address2: this.address2,
postalcode: this.postalcode,
city: this.city,
country: this.country,
vat: this.vat,
gender: this.gender,
initials: this.initials,
firstname: this.firstname,
lastname: this.lastname,
email: this.email,
telephone: this.telephone,
companyname: this.companyname,
}).then(request => {
//THIS SHOULD FIRE. BUT WE IGNORE THE THEN FUNCTION.
window.location = '/quotation-request/thanks';
}, (response) => {
console.log(response);
if (response.status == 422) {
this.errors.record(response.body);
bootbox.alert("Er ging iets fout! zijn alle velden ingevuld? <br><br>Klik op de knop 'Edit quotation request' om terug te gaan naar het formulier");
} else {
bootbox.alert("Er ging iets goed fout. Neem contact op met de systeembeheerder !")
}
});
},

И в моей консоли код 0 без statustext
И в моей консоли код 0 без statustext

Вкладка сети показывает:

Вкладка сети показывает

2

Решение

Там может быть несколько причин, почему вы получаете status: 0 как 403, 503, и вы должны взглянуть на вкладку Сеть в Chrome DevTools, чтобы увидеть реальный статус ответа.

1

Другие решения

Проблема была в том, что у меня было 2 формы на странице. Вторая форма показа для обзора, где происходила отправка, не имела @submit.prevent атрибут добавлен ..

1

По вопросам рекламы [email protected]