Javascript - 获取location.pathname + location.search - 不占用所有部分

时间:2013-11-10 12:33:47

标签: javascript html

我正在编写js函数,该函数采用实际location.pathname + location.seach,因此如果用户点击back按钮,用户可以返回搜索结果页面。

示例网址:http://127.0.0.1:8000/search_for_book/?titel=&autor=doniyor#

function select_book(bookid){
  var backurl = String(window.location.pathname+window.location.search);
  //alert(backurl); //<---- this is giving the correct full path
  window.location = 'selected/?book_id=' + bookid + '&back=' + backurl;
}

但是在最后一行中,函数仅追加?titel=,并切断其余部分。新的网址正在变成这样:

http://127.0.0.1:8000/search_for_book/selected/?book_id=10&back=/search_for_book/?titel=
这是为什么?我需要完整的location.pathname与完整的location.search。

任何想法?

1 个答案:

答案 0 :(得分:1)

  

但是在最后一行中,函数仅追加到?titel =并且切断其余部分。

不,它没有。警告/记录您分配给window.location的字符串值会向您显示。 (顺便说一句,window.location.href是更新位置的正确方法。location本身是一个对象,而不是属性 - 只有浏览器的错误容忍允许你这样做。所以使用{{ 1}}代替。)

这是错误的,因为URL中的window.location.href = …将参数彼此分开。因此,参数&的值在back之后结束,然后是 new 参数& - 因为您忽略了对参数值进行URL编码

在将值添加到字符串之前,对值使用autor