Переменные внутри класса недоступны в методе - PullRequest
0 голосов
/ 29 апреля 2019

Я объявил переменную вне методов функции в классе. И я изменил значение, отправив запрос AJAX. Запрос в порядке. но когда я повторяю имя переменной, она по-прежнему возвращает ноль и не меняется вообще. Как я могу правильно изменить его?

вот мой код.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;
use DB;
use App\Helpers\globalFunction;

class registerController extends Controller
{
    public $documentType;
    public $trackingNumber;
    public $recipient;
    public $description;
    public $myvalue = 'hello';

    public function pendingDataBeforeSave(Request $request)
    {
        $this->documentType = $request->documentType;
        $this->trackingNumber = $request->trackingNumber;
        $this->recipient = $request->recipient;
        $this->description = $request->description;
        $this->myvalue = 'new one';
    }

    public function storeSend(Request $request)
    {
        $office = $request->office;
        $sendTo = $request->sendTo;
        $status = $request->status;
        $message = $request->message;
        echo json_encode($this->documentType);
    }
}

Здесь на стороне клиента для функции storeSend ()

var object = {
    office: officeDropdown.value,
    sendTo: senderDropdown.value,
    status: statusDropdown.value,
    message: message.value
};

var xhr = new XMLHttpRequest();

xhr.open("POST", "/sendData");
xhr.setRequestHeader("Content-type", "application/json");
xhr.setRequestHeader("X-CSRF-TOKEN", document.head.querySelector("[name='csrf-token']").content);
xhr.send(JSON.stringify(object));
xhr.onload = function () {
    if (xhr.status == 200) {
        alert(xhr.responseText);
    } else {
        alert(xhr.responseText);
    }
};

и вот код на стороне клиента для функции pendingDataBeforeSave

var xhr = new XMLHttpRequest();

var object = {
    documentType: documentType.value,
    trackingNumber: trackingNumber.value,
    recipient: recipient.value,
    description: description.value
};

xhr.open("POST", "/pendingDataBeforeSave");
xhr.setRequestHeader("Content-type", "text/plain");
xhr.setRequestHeader("X-CSRF-TOKEN", document.head.querySelector("[name='csrf-token']").content);
xhr.send(JSON.stringify(object));
xhr.onload = function () {
    if (xhr.status == 200) {
        alert('sent');
    } else {
        alert(xhr.responseText);
    }
};

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019

При взгляде на это два метода обрабатываются двумя разными маршрутами. Как работает PHP, после завершения первого запроса он не будет сохранять значения свойств в нескольких запросах.

0 голосов
/ 29 апреля 2019

Весь класс не требуется, так как класс инициируется при каждом вызове, а ранее установленные значения в Route::post('/pendingDataBeforeSave', 'registerController@pendingDataBeforeSave' не сохраняются при вызове следующего Route::post('/sendData', 'registerController@storeSend');.

Нет, если нет механизма, в котором значения хранятся в разных запросах, о которых здесь не упоминалось?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...