如何使用 get 发送数据而不在 url 中显示参数?
Posted
技术标签:
【中文标题】如何使用 get 发送数据而不在 url 中显示参数?【英文标题】:How to send data using get without display parameters in 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 Rahman Munna,你是什么意思?如果我使用post
,则存在错误
【参考方案1】:
您可以使用Input
和get
方法这样做:
查看
!! 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】:如果没有身份验证,请使用返回重定向到另一个路由而不是返回视图。在您重定向的另一条路由中,返回您想要在没有经过身份验证的用户时显示的原始视图。
【讨论】:
以上是关于如何使用 get 发送数据而不在 url 中显示参数?的主要内容,如果未能解决你的问题,请参考以下文章