在url中传递多个类似哈希的参数

roy*_*roy 6 parameters ajax url jquery

我正在使用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>
Run Code Online (Sandbox Code Playgroud)
if(type==abc && id==123)
{
    do this..
}
Run Code Online (Sandbox Code Playgroud)

通常我们这样做,<a href="something.php?type=abc&id=123">Click</a>但它会重新加载整个页面.

jfr*_*d00 9

哈希值具有一组有限的字符,技术上允许它们在其中.如果您在此处查看URL规范,则哈希值称为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的哈希值.

至于使用什么技术,它真的取决于你.如果需要在那里表示多个参数,可以在哈希值中创建自己的小语法.我个人可能会&像查询字符串一样分隔值,但使用-而不是=.