web-dev-qa-db-ja.com

プレビュー後-AJAXおよびFancyboxを使用してデータを渡す

新しいFancyboxiframeに表示される投稿プレビューを実行しようとしています。数週間以来、私はいくつかのヘルプやベストプラクティスを探していますが、それを見つけることができません。

私の主な問題は、(データベースを更新する前に)フォームからFancyboxウィンドウにデータを渡すことです。私のAJAXスキルは非常に貧弱なので、私の問題はそれほど難しくないかもしれません。

コードを確認してください:

$('.preview2').fancybox({
fitToView    : false,
width        : 905,
height        : 505,
autoSize    : false,
closeClick    : false,
openEffect    : 'none',
closeEffect    : 'none',
ajax: {
    type: "POST",
    cache : false,
    url: "preview.php",
    data: $('#postp').serialize()
}
});

そして、呼び出しリンク:

<a class="preview2" data-fancybox-type="iframe" href="preview.php" id="preview2">Preview</a>

変数を投稿して適切な場所に出力するだけで、preview.phpファイルですべてがうまくいくとほぼ確信しています。

誰かがFancybox/AJAX部分をチェックできますか?

6
kacper

コメントで述べたように、プレビューボタンはajax経由でフォームを送信して、POSTプレビュー値を取得する必要があります(ajaxの代わりにiframeを使用します) ) そう :

_<a class="preview2" data-fancybox-type="ajax" href="preview.php" id="preview2">Preview</a>
_

次に、プレビューボタンを手動のon("click")メソッドにバインドして、最初にajax経由でフォームを送信し、次に次のように結果をfancyboxに投稿する必要があります。

_$(document).ready(function () {
  $('.preview2').on("click", function (e) {
    e.preventDefault(); // avoids calling preview.php
    $.ajax({
      type: "POST",
      cache: false,
      url: this.href, // preview.php
      data: $("#postp").serializeArray(), // all form fields
      success: function (data) {
        // on success, post (preview) returned data in fancybox
        $.fancybox(data, {
          // fancybox API options
          fitToView: false,
          width: 905,
          height: 505,
          autoSize: false,
          closeClick: false,
          openEffect: 'none',
          closeEffect: 'none'
        }); // fancybox
      } // success
    }); // ajax
  }); // on
}); // ready
_

[〜#〜] demo [〜#〜]を参照してください(ソースコードを自由に調べてください)

18
JFK

私は機能するfancyboxでもっと面白い方法を試しましたが、

fancyboxページで

var myvar;
$(document).ready(function(){
    myvar = parent.$("#formvariwant").val();
});
0
Theresa Forster