我正在使用jQuery和Ajax构建一个动态网站.我使用History Plugin解决了历史问题和后退按钮.我想在url中传递多个hash like参数,而无需在click事件上重新加载整个页面.我想要的东西:
> something.PHP #type = abc& id = 123或
> something.PHP /?type = abc& id = 123 …
哪个可能是在网址中传递和检索此类有点参数的最佳方式?
<a href="#type=abc&id=123">Click</a>
if(type==abc && id==123) { do this.. }
通常我们这样做,< a href =“something.PHP?type = abc& id = 123”>点击< / a>但它重新加载整个页面.
解决方法
哈希值具有一组有限的字符,技术上允许它们在其中.如果你在这里查看
URL spec,哈希值称为fragmentid.这是它可以包含的语法:
fragmentid xalphas xalphas xalpha [ xalphas ] xalpha alpha | digit | safe | extra | escape safe $| - | _ | @ | . | & | + | - extra ! | * | " | ' | ( | ) |,escape % hex hex alpha a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z digit 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
您会注意到除非在设置或检索哈希值时调用encodeURIComponent和decodeURIComponent,否则您可以使用&,但不能=.
至于使用什么技术,它真的取决于你.如果需要在那里表示多个参数,可以在哈希值中创建自己的小语法.我个人可能会将这些价值与&就像在查询字符串中一样,但是使用 – 而不是=.