このシナリオ:
ユーザーは自分のZipを入力フィールドに挿入し、魔法のボタンをクリックすると、自分の場所に最も近い店舗が表示されます。私はこのサービスを完全に呼び出し、AJAXを使ってロードします。すべては順調です。
さて、ページのどこかに結果を挿入する代わりに、ファンシーボックスに表示したいと思います。私は単にこれを機能させることができません。
JavaScript:
$('#button').on('click', function(){
// Function to build the URL edited out for simplicity
var nzData = '/url.com?Zip=8000 #module';
$.fancybox({
ajax: {
data: nzData
}
});
});
FancyboxがポップアップしてURL(nzData
)からマークアップが表示されることを期待しています。 Fancyboxはロードされますが、コンテンツの代わりに、「リクエストされたコンテンツをロードできません。しばらくしてからもう一度お試しください。」という文字列が表示されます。
それはサービスの問題ではないので、私が何かを見落としたり、Fancybox APIをレイプしたりしているだけだと思います。それで、私は何が間違っていますか?
編集:私は言及するのを忘れていました、私は古いバージョンのFancybox(v1.3.4)を使用しています。
コンテンツをページの非表示のコンテナーにロードし、そのコンテンツをFancyboxに表示しました。
$('#button').on('click', function(){
var nzData = '/url.com?Zip=8000 #module';
$('#foo').load(nzData, function(){
var foo = $('#foo').html();
$.fancybox(foo);
});
});
それはあまりきれいではありませんが、認めますが、それは私がそれを機能させることができる唯一の方法です。私は今朝、同様の問題で同じ解決策に頼っていた別の開発者と話しました。
それでも、もっと良い解決策があるはずです。誰かが知っているなら、私はそれを聞いてみたいです!
これは古い質問であることは知っていますが、最近、同様の問題に対処する必要がありました。これがajaxをfancyboxにロードするために私がしたことです。
$('#button').on('click', function(){
$.fancybox({
width: 400,
height: 400,
autoSize: false,
href: '/some/url-to-load',
type: 'ajax'
});
});
fancyboxは、設定を渡すことができるパラメーター「ajax」を使用します(- jquery で説明されているように)
$("#button").click(function() {
$.fancybox.open({
href: "ajax.php",
type: "ajax",
ajax: {
type: "POST",
data: {
temp: "tada"
}
}
});
});
URLをajaxとしてロードしたい場合は、タイプを設定する必要があります-
$.fancybox({
href : nzData,
type : 'ajax'
});
同じことをすることに興味がありました。私は同様の解決策を見つけましたが、ここで推奨されている他の解決策とは異なります。両方のAPIのドキュメントを確認すると、これはV1またはV2で機能するはずです。
$('#button').on('click', function(){
$('#foo').load('/content.html', function(){
var $source = $(this);
$.fancybox({
content: $source,
width: 550,
title: 'Your Title',
etc...
});
});
});
次に、データのコンテナー。
<div id="foo" style="display: none;"></div>
試してください:
$.fancybox({
type: 'ajax',
ajax: {
url: nzData
}
});
Fancybox内にnzData
を表示したい場合は、
$.fancybox(nzData,{
// fancybox options
});
https://stackoverflow.com/a/10546683/955745
<a href="mypage.html #my_id" class="fancybox fancybox.ajax">Load ajax</a>
$(".fancybox").fancybox();