我知道这不是最好的解决方案,因为它依赖于第三方库。
Lodash 是一套管理数据集合的函数。
如果你想从 URL 中删除 's' 查询参数,使用 Lodash,你可以这样做:
// remove a param from $route.query
var newRouteQuery = _.omit(this.$route.query, 's');
this.$router.replace( { query: newRouteQuery } );
_.omit () Lodash 的函数将对象作为第一个参数,并返回相同的对象,但没有第二个参数中列出的键的项目。因为在这种情况下,我们只传递一个字符串作为第二个参数(字符串 's'),所以该函数只会省略对象的一个索引。
这个函数的 vanilla-javascript 实现是这样的(注意:ie8 不支持这个,如果你不使用 webpack,请记住它)。
// Omit 's' from vue router query params
var newRouteQuery = {};
Object.keys(this.$route.query).forEach(function(key){
if (key != 's')
newRouteQuery[key] = this.$route.query[key];
});
要将所有这些参数传递给 PHP,您基本上需要一个 Ajax API 来发送请求。您可以this.$route.query
通过 POST、GET 或任何其他方法将 的内容传递给服务器。
使用 Fetch API(它不需要任何额外的库并且具有几乎完整的浏览器支持),您可以执行以下操作:
return fetch('/process.php', {
method: 'POST',
cache: 'no-cache', // don't cache the response
credentials: 'omit', // don't send cookies
body: JSON.stringify(this.$route.query)
})
.then(function(response){
// ...
在这种情况下,我将发送一个 POST 请求,其中数据作为请求正文中的 JSON 字符串。有不同的方式来发送数据和不同类型的请求。您应该研究适合您的 PHP 环境和 JS 环境的最佳方法(您可能已经在加载 Ajax 库)。