javascript - 如何使用get发送数据而不在url中显示参数?

标签 javascript laravel routes vue.js laravel-5.3

我的情况是这样的:

我的 Blade Laravel View 是这样的:

{!! 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 View Blade 中存在结账 View 的 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 (Method Not Allowed)

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

最佳答案

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

Controller

public function yourFunction(){

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

}

希望你能理解。

关于javascript - 如何使用get发送数据而不在url中显示参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46066890/

相关文章:

javascript - Webpack processAssets 钩子(Hook)和资源源

javascript - 多个文件选择仅返回最后一个文件

php - Laravel 5.3 中重定向路线

javascript - 如何路由嵌入查询字符串的搜索 URL?

javascript - 如何为两个动态路由创建一个页面?

javascript - Chrome 扩展套接字与外部脚本通信

javascript - 我应该使用什么来过滤服务器上的 backbonejs 集合?

javascript - 保留 JavaScript 中哈希/ anchor 更改的历史记录

php - 使用 Laravel 插入延迟

php - Laravel 中的错误爆炸