Ax ios - Перенаправление на контроллер с данными - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь перенаправить на контроллер данные и использовать эти данные в контроллере (я использую laravel)

/* html */

<a @click="Submit()" href="/buy" class="btn btn-block btn-lg btn-primary btn-checkout-pay">Buy</a>

/*js codes*/
            Submit : function(){
                axios.post('/buy',{
                    ProductId : this.id,
                    //ProductId : "1";//
                    ProductAmount : this.temporaryamount
                    //ProductAmount : "12000";//
                })
                    .then(function (response) {
                        window.location = "/buy";
                        console.log(response);
                    })
                    .catch(function (error) {
                        console.log(error);
                    })
            }

, а /buy перенаправляется на ShoppingController@create

/* web.php */
Route::get('/buy','ShoppingController@create');
Route::post('/buy','ShoppingController@create');
/* ShoppingController@create */

    public function create(Request $request)
    {
         dd($request['ProductId']);

    }

проблема в том, что $request['ProductId']; это null

, что означает, что запрос axois перенаправляется без данных

PS: i не хочу возвращать данные, которые я хочу просто использовать данные в контроллере

Ответы [ 3 ]

0 голосов
/ 23 января 2020

если я правильно понимаю, ваша проблема в том, что вы не видите возврата "dd".

Это нормально, ваш console.log находится после окна! и не дд с топором ios! Вы должны вернуться, чтобы увидеть ответ!

Контроллер

 public function create(Request $request)
{
     return $request['ProductId'];
}

. vue

/*js codes*/
        Submit : function(){
            axios.post('/buy',{
                ProductId : this.id,
                //ProductId : "1";//
                ProductAmount : this.temporaryamount
                //ProductAmount : "12000";//
            })
                .then(function (response) {
                    console.log(response);
                    //Remove window.location, or if you dont remove you dont see console.log!
                    //window.location = "/buy";

                })
                .catch(function (error) {
                    console.log(error);
                })
        }

и на своем пути удалить get.

/* web.php */
Route::post('/buy','ShoppingController@create');
0 голосов
/ 23 января 2020

По сути, вы не можете использовать вместе эти две функции создания с другим методом маршрута, и в то же время вы хотите получить идентификатор продукта. Ваш почтовый запрос будет работать в этой ситуации, но запрос на получение не будет. вот почему dd ($ request ['ProductId']) имеет значение null. Вы не можете использовать запрос в качестве параметра всякий раз, когда вы используете запрос get. $ request в качестве параметра предназначен только для пост-запроса.

для дальнейшего объяснения, пожалуйста, прочитайте laravel docs source

, чтобы решить вашу проблему, вы можете удалить эту строку

window.location = "/buy";

и покажите свои данные поста в контроллере этим

public function create(Request $request) {
   dd($request->all())
}
0 голосов
/ 23 января 2020

Запрос POST, сделанный с топором ios (axios.post('/buy',{..), вероятно, точен.

Но GET -irectirect (window.location = "/buy";) не будет содержать никаких данных. Поскольку это запрос GET, вам нужно добавить свои данные в URI или строку запроса, например: /buy/:ProductId

Прямо сейчас Route::get('/buy','ShoppingController@create'); всегда получит пустой $request .

Я не уверен, чего вы пытаетесь достичь, поэтому я не могу переписать ваш код, но если вы удалите window.location = "/buy";, вы по крайней мере увидите вывод консоли.

...