terminating; zero elements found by selector
IEのデバッグで「[cycle] terminating; zero elements found by selector」が表示される。
機種によっては「loading」から切り替わらない。
コードはこんな感じ
html
<script type="text/javascript"><!-- $(document).ready(function(){ $.ajax({ url: "hoge.xml", dataType: "xml", success:xmlRoom, //complete:xmlRoom, error: function(){alert("XMLファイルを読み込めませんでした");}, cache:false }); }); --></script> 中略 <div id="room">loading<img src="ajax-loader.gif"></div>
hoge.js
function xmlRoom(xml){ var rtn = ""; $("Row", xml).each(function(){ HTML作成処理 } $("#room").html(rtn); }
jquery.cycle スライドショープラグインと Ajax を組み合わせる際の注意というのを見つけた。ここから発展してjQuery モダンAjaxな書き方を目指して 〜Deferredを使ったAJAX〜に流れる。
1.8以上って素晴らしそう。だけど利用しているのは1.4系だ。
そこでjQueryの同居を考える。先に呼び出されるのは1.4系、1.10系を呼び出したい。
<script type="text/javascript" src="jquery-1.5.1.min.js"></script> <script type="text/javascript" src="jquery-1.10.2.min.js"></script> <script type="text/javascript"> var $j = $.noConflict(true); </script> <script type="text/javascript"><!-- console.log(jQuery.fn.jquery); =>1.5.1 console.log($j.fn.jquery); =>1.10.2 </script>
jQueryの呼び出しは「後勝ち」らしいので「$」「jQuery」は1.10.2になる。後勝ち許すまじの為にnoConflictを使う。
さて、$と$jが区別されるようになったので置換とか考えていたけど、クロージャーというのを使うと便利らしい。
(function($){ ライブラリ本体のjavascript・・・ })($j)
これは上手いこと行かなかった。
結果をまとめる。
ajaxだけ1.10を使いたい。
<script type="text/javascript" src="jquery-1.5.1.min.js"></script> <script type="text/javascript" src="jquery-1.10.2.min.js"></script> <script type="text/javascript"> var $j = $.noConflict(true); </script> <script type="text/javascript"><!-- $(document).ready(function(){ $j.ajax({ url: "hoge.xml", dataType: "xml", cache:false }).done(function(data){ xmlRoom(data); }).fail(function(){ alert("XMLファイルを読み込めませんでした"); }); }); </script>
[mailformpro]エラーERROR CODE5 Javascriptが有効ではありません。
http://www.synck.com/contents/download/cgi-perl/mailformpro.html
テスト環境ではバッチリだったのに本番環境で「送信」ボタンを押したらsend.cgiのURLでこんなメッセージが出た。
エラーERROR CODE5 Javascriptが有効ではありません。
頭を抱えながらググる。
CGIエラー「エラーERROR CODE5 Javascriptが有効ではありません。」に
#&javascript_check();
コメントアウトする技があったので試したら送信できるようになった。