【问题标题】:How to send data using get without display parameters in url?如何使用 get 发送数据而不在 url 中显示参数?
【发布时间】:2018-02-14 10:52:27
【问题描述】:

我的情况是这样的:

我的视图刀片 laravel 是这样的:

{!! Form::open(['route' => 'shop.payment']) !!}
    <input type="hidden" name="result_type">
    <input type="hidden" name="result_data"">
    ...
    <input type="radio" name="payment_method" value="transfer">
    ....
    <checkout-view></checkout-view>
{!! Form::close() !!}

在视图刀片 laravel 中存在结帐视图的 vue 组件

这样的组件:

<script>
    export default{
        template:'<button @click="checkout" class="btn btn-danger pull-right" type="submit">Checkout</button>',
        methods: {
            checkout(e){
                if(window.Laravel.hasOwnProperty('auth')) {
                    $('#payment-form').attr('action', '/shop/payment/checkout')
                    return true;
                }
                else {
                    $('#payment-form').attr('action', '/shop/detail')
                    $("#payment-form").attr('method', 'get')
                    return true
                }
            }
        },
    }
</script>

我的路线 laravel 是这样的:

Route::group(['prefix' => 'shop','as'=>'shop.'], function () {
    Route::get('detail', function(){
        return view('shop.detail');
    });
});

如果没有授权,它将运行else 和这样的网址:

http://myshop.dev/shop/detail?_token=FLFJ7MfWi1DZv88Uzk2lrBgVXLN6Y3WHTpskDIED&result_type=&result_data=&payment_method=transfer

我想去掉参数,所以网址是这样的:

http://myshop.dev/shop/detail

我尝试改成post

我变成了这样:

$('#payment-form').attr('action', '/shop/detail')
$("#payment-form").attr('method', 'post')
return true

还有

Route::post('detail', function(){
    return view('shop.detail');
});

但它不起作用,存在错误:

POST http://myshop.dev/shop/detail 405(方法不允许)

解决我的问题的正确方法是什么?

【问题讨论】:

  • 所以对于这两种情况,您都使用了 post 方法,但结果出来了,不是吗?
  • @Ataur Ra​​hman Munna,你是什么意思?如果我使用post,则存在错误

标签: javascript laravel routes vue.js laravel-5.3


【解决方案1】:

您可以使用Inputget 方法这样做:

查看

{!! Form::open(['route' => 'shop.payment','method' => 'GET']) !!}
    <input type="hidden" name="result_type">
    <input type="hidden" name="result_data"">
    ...
    <input type="radio" name="payment_method" value="transfer">
    ....
    <checkout-view></checkout-view>
{!! Form::close() !!}

路线

Route::get('/test/route', 'TestController@yourFunction');

控制器

public function yourFunction(){

    $result_type = Input::get('result_type');
    $result_data = Input::get('result_date');
    ......

}

希望你能理解。

【讨论】:

  • 我希望表单继续使用post。如果用户是访客(未登录),它将调用/shop/detail,而 url 中没有参数
  • @SuccessMan 有了 Post,那有什么问题呢?
  • 您尝试阅读我的问题。我已经详细解释过了。因此,如果用户未登录,我想更改操作
  • @SuccessMan 我已经阅读了整个问题,并认为这是一个好问题。我对 vue.js 不熟悉。好的
  • 好的。谢谢。我只是没有找到正确的答案
【解决方案2】:
Route::group(['prefix' => 'shop','as'=>'shop.'], function () {
    Route::get('detail', function(){
    return view('shop.detail');
    });
});

我相信这条路线是 shopdetail,而不是 shop/detail

键入命令php artisan route:list 以查看 laravel 如何查看 url。

【讨论】:

    【解决方案3】:

    如果没有身份验证,请使用返回重定向到另一个路由而不是返回视图。在您重定向的另一条路由中,返回您想要在没有经过身份验证的用户时显示的原始视图。

    【讨论】:

      猜你喜欢
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-16
      • 2023-04-07
      • 1970-01-01
      相关资源
      最近更新 更多