我对htm ex中的"/"如何工作感到困惑:https://stackoverflow.com/questions/ask我有一个api,它会查找用户名。所以我想要的是一个搜索框当点击搜索时它会转到index。html/searchtext在jquery中它会获取"search"部分并将其转换为字符串
您可以通过
在JavaScript中获得页面的当前URLvar pathname = window.location.pathname; // Returns path only
var url = window.location.href; // Returns full URL
一旦你有了这些,你就可以使用jQuery或纯javascript来获得任何URL的最后一部分,或者在你的情况下搜索文本。
var url = 'http://www.website.com/index.html/searchtext'
var lastpart = url.split('/').reverse()[0];
魔力在web服务器,而不是你的代码。
这是通过url重定向或重写完成的。例如,如果你有一个像这样的api:
http://example.com/user?name=USERNAME
在Apache中,你会创建一个mod_rewrite规则:
RewriteRule ^user/(.*) user?name=$1
或者在lighttpd中创建一个ModRewrite规则:
url.rewrite-once = ( "^/user/(.*)" => "/user/$1" )
在一些语言中,如node.js或go, web应用程序通常被实现为web服务器。因为代码本身就是一个web服务器,你可以直接在路由器中指定重写规则。
例如,在node.js中使用express,我们可以这样写处理程序:
express.get('/user/:name',function(req,res) {
var name = req.param('name'); // taken from the path
});
或者在go中,我们可以将路由写成:
router.GET("/user/:name", userHandler)
这可以在客户端完成吗?
简短回答:no.
长答案:当用户在地址栏输入url并按回车键时,就太晚了。你可以用.onbeforeunload
拦截它,但是从.onbeforeunload
重定向在大多数浏览器中都是不工作的。前提是你的页面是打开的。如果用户在空白页面中输入地址,你甚至无法拦截它。
为什么这需要在服务器端?好吧,首先,你的页面需要加载,以便你运行任何javascript(例如读取window.location
)。为了加载,您需要http://example.com/user/slebetman
的页面和http://example.com/user/armaiz
的另一个页面等。但是如果你有了这些,你就不需要在客户端实现任何东西了。