【问题标题】:change to davis.js routing lib更改为 davis.js 路由库
【发布时间】:2012-12-31 01:54:17
【问题描述】:

我使用 pushstate/popstate 构建了一个演示,但是我想知道 如果 Davis.js js 路由库在这里如何使用,有人可以帮我看看下面的例子吗?
谢谢!!

使用 davis.js index.php

print"<a class=\"a\" href=\"$result[id]\"></a>";
if($_GET['id']){
    if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){
        print"
            <div class=\"wrapb\">
                <div class=\"b\"></div>
                <div class=\"close\"></div>
            </div>
        ";
    }
}

js

var app = Davis(function(){
    this.get('?id=:name', function(req){
        var b = $(req).filter('.wrapb').html();
            $('.a').before(b);
            $('.close').click(function(){
                history.back();
            });
    })
})

【问题讨论】:

    标签: jquery


    【解决方案1】:

    我认为这应该可以达到您的目标:

    var app = Davis(function () {
      this.get('/', function (req) {
        var xhr = $.ajax('/', {
          data: { id: req.params.id },
          dataType: 'html'
        })
    
        xhr.then(function (data) {
          var html = $(data)
    
          html.find('.close').on('click', function () {
            history.back()
          })
    
          $('.a').before(html)
        })
      })
    })
    

    产生给路由处理程序的 req 对象不是 ajax 请求,它是表示对路径的“请求”的对象,在本例中为 /,更多来自 docs。

    当在路由回调中单击链接时,您必须执行任何您希望发生的工作,在您的情况下,您似乎想要向服务器发出请求,该服务器将以 html 的片段进行响应(I' m 不是 PHP 开发人员,所以这可能是错误的)。然后,您希望将此 html 附加到当前文档中的链接之后。

    Davis 的设计不允许基于查询参数进行路由,因此您不应在路径定义中使用它们,因此我将其更改为 /。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-28
      • 2021-12-07
      • 2020-02-03
      • 2016-11-25
      • 2016-10-22
      • 2013-04-21
      • 1970-01-01
      • 2016-09-01
      相关资源
      最近更新 更多