如何使用url中没有显示参数的get发送数据?

时间:2017-09-06 04:39:32

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

我的情况是这样的:

我的视图刀片如下:

{!! 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>

我的路线像这样:

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(方法不允许)

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

3 个答案:

答案 0 :(得分:0)

您可以使用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');
    ......

}

我希望你明白。

答案 1 :(得分:0)

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

我认为这条路线是 shopdetail ,而不是商店/细节

输入命令php artisan route:list以查看laravel如何查看网址。

答案 2 :(得分:0)

如果没有auth,则使用return redirect to another route而不是返回视图。在您重定向的另一个路由中,如果没有经过身份验证的用户,则返回要显示的原始视图。