永久链接ajax页面的最佳实践

时间:2010-02-23 08:25:51

标签: ajax

假设我有一个“报告”页面,可以通过Javascript进行自定义。假设我有start_date,end_date和type(“simple”或“full”)可以更改。现在我希望地址栏始终包含当前(自定义)视图的“永久链接”,以便用户可以轻松复制

如果我在没有Ajax的情况下执行此操作,我只需使用类似“/ report /?start_date = 2010-01-01& end_date = 2010-01-31& type = full”的内容作为固定链接。但由于我想从Javascript更新URL,我需要使用锚点(#),否则需要重新加载整个页面。

在这种情况下,是否有关于如何生成永久链接的最佳实践?我会选择“/ report /#start_date = 2010-01-01,end_date = 2010-01-31,type = full”之类的东西,然后用Javascript解析那个东西。是否有更好或更普遍接受的方式来解决这个问题?

另外,有没有更好的方法来处理Javascript方面而不是简单地解析所有内容?

感谢。

2 个答案:

答案 0 :(得分:1)

我最终使用http://example.com/resource/#param1=value1&param2=value2形式的网址。我写了一些Javascript代码来处理这个问题(解析/更新URL)。如果有人有兴趣,代码是on Github

答案 1 :(得分:0)

如果您有指向域资源的链接,最好的方法是:

  • 保持网址不变(使用查询字符串,如some/site?start=4&end=10
  • 为这些链接添加一个类,为您的javascript提供一个挂钩

    <a href=".." class="ajax">Some resource</a>

  • 计划他们将生成哪种数据类型的响应(纯文本,xml,JSON,HTML)
  • 使后端决定是否返回完整页面或ajax调用的响应
  • 这样页面仍可访问

例如,在PHP中,您可以轻松查看$ _SERVER变量并决定是返回整页响应还是准备好响应ajax:

function isXmlHttpRequest()
{
    return isset( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ] ) && 
        ($_SERVER[ 'HTTP_X_REQUESTED_WITH' ] == 'XMLHttpRequest');
}

本地页面资源

html喜欢:

<a href="#first">First</a>
<a href="#second>Second</a>

<div id="first">lorem</div>
<div id="second">ipsum</div>

您不必解析任何内容,您只需显示带有id的正确div,您将直接从a[href]获取..这被认为是一种很好的做法,因为您的页面即使关闭JS,仍然可以访问。