如何附加" /"在url地址工作在HTML? (例如:HTTP://stackoverflow.com/questions*/ask*)

时间:2015-08-19 02:19:17

标签: javascript jquery html

我很担心" /"适用于htm ex:https://stackoverflow.com/questions / ask 所以我有一个api,它是如何工作的,它查找用户名。所以我想要的是一个搜索框,当他们点击搜索时,它会转到index.html / searchtext,而在jquery中,它会获得"搜索"部分并将其变成一个字符串。

2 个答案:

答案 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:

  

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服务器,因此您可以直接在路由器中指定重写规则。

例如,在带有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的其他页面等。但是如果您有,则不需要在客户端实现任何内容。