我很担心" /"适用于htm ex:https://stackoverflow.com/questions / ask 所以我有一个api,它是如何工作的,它查找用户名。所以我想要的是一个搜索框,当他们点击搜索时,它会转到index.html / searchtext,而在jquery中,它会获得"搜索"部分并将其变成一个字符串。
答案 0 :(得分:0)
您可以通过
获取JavaScript中页面的当前网址var 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];
答案 1 :(得分:0)
神奇之处在于网络服务器,而不是你的代码。
这是使用url重定向或重写完成的。例如,如果你有一个如下所示的api:
在Apache中,您将创建一个mod_rewrite规则:
RewriteRule ^user/(.*) user?name=$1
或在lighttpd中,您将创建一个ModRewrite规则:
url.rewrite-once = ( "^/user/(.*)" => "/user/$1" )
在某些语言(例如node.js或go)中,Web应用程序更常用作Web服务器。由于代码本身就是一个Web服务器,因此您可以直接在路由器中指定重写规则。
例如,在带有express的node.js中,我们可以将处理程序编写为:
express.get('/user/:name',function(req,res) {
var name = req.param('name'); // taken from the path
});
或者我们可以写一条路线:
router.GET("/user/:name", userHandler)
这可以在客户端完成吗?
简答:不。
答案很长:当用户键入地址栏中的网址并按下输入时为时已晚。您可以使用.onbeforeunload
拦截它,但已知来自.onbeforeunload
的重定向在大多数浏览器中都不起作用。那就是你的页面打开了。如果用户在空白页面中输入地址,您甚至无法拦截它。
为什么这需要服务器端?好吧,首先,您的页面需要加载才能运行任何javascript(例如阅读window.location
)。为了加载,您需要http://example.com/user/slebetman
的页面和http://example.com/user/armaiz
的其他页面等。但是如果您有,则不需要在客户端实现任何内容。