-1

私はpushstate/popstateビルドデモを使用していますが、Davis.js jsルーティングライブラリの使用方法を知りたいのですが、以下の例で誰かが私を助けてくれますか?
ありがとう!!

davis.jsindex.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();
            });
    })
})
4

1 に答える 1

2

私はこれがあなたが達成しようとしていることをするべきだと思います:

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リクエストではなく、パスへの「リクエスト」を表すオブジェクトです。この場合/は、ドキュメントからのオブジェクトです。

ルートコールバック内でリンクがクリックされたときに発生したい作業を行う必要があります。この場合、HTMLの切り取りで応答するサーバーにリクエストを送信したいようです(私はPHP開発者なので、これは間違っている可能性があります)。次に、現在のドキュメントのリンクの後にこのhtmlを追加します。

Davisは、クエリパラメータに基づくルーティングを許可するように設計されていないため、パス定義でそれらを使用するべきではないため、単にに変更しました/

于 2012-12-31T13:31:07.520 に答える