0

PHP ページの iDangerous スワイパーで奇妙な問題が発生しています...現在、会社で使用しているタッチスクリーン キオスクを更新しています (最大の変更は、MySQL データベースから SQL Azure クラウド データベースへの移行です)。 )。現在、比較的小さなデータベースからプレーン テキスト データを SQL から個々のスワイパー スライドにロードするために使用されています。結果セットのサイズが異なるさまざまな選択可能なカテゴリがあり、小さいカテゴリは問題なく動作するようですが、大きいカテゴリを選択すると、何らかのタイミングの問題または何かが発生し、swiper コンテナー全体が消えるか、完全に失敗するようです。ロード。私たちが持っている最大の結果セットは約 75 レコード程度であり、単純なクエリから実際にロードするのにまったく時間がかからないため、何が起こっているのかわかりません。現在、iDangerous スワイパーのタイムアウトは 1000 ミリ秒に設定されており、その数値を 5000 ミリ秒程度に増やすと、問題が修正されます。問題は、基本的なテキスト結果をロードするためだけに、異なるカテゴリを選択するたびに 5 秒待たなければならないのは、ユーザー エンドにとって本当に面倒なことです。結果セットを制限すること (目的を無効にするため、これは実際にはオプションではありません) またはタイムアウトを使用できないほど長くすること以外に、これを修正するためにできる方法についての提案はありますか? 元のデータベース (当時は localhost で実行されていた) にクエリを実行するときにはこの問題は発生しなかったので、SQL Azure から PHP への接続と関係があるのではないでしょうか? 基本的なテキスト結果をロードするためだけに、異なるカテゴリを選択するたびに 5 秒待たなければならないのは、ユーザー エンドにとって本当に最悪です。結果セットを制限すること (目的を無効にするため、これは実際にはオプションではありません) またはタイムアウトを使用できないほど長くすること以外に、これを修正するためにできる方法についての提案はありますか? 元のデータベース (当時は localhost で実行されていた) にクエリを実行するときにはこの問題は発生しなかったので、SQL Azure から PHP への接続と関係があるのではないでしょうか? 基本的なテキスト結果をロードするためだけに、異なるカテゴリを選択するたびに 5 秒待たなければならないのは、ユーザー エンドにとって本当に最悪です。結果セットを制限すること (目的を無効にするため、これは実際にはオプションではありません) またはタイムアウトを使用できないほど長くすること以外に、これを修正するためにできる方法についての提案はありますか? 元のデータベース (当時は localhost で実行されていた) にクエリを実行するときにはこの問題は発生しなかったので、SQL Azure から PHP への接続と関係があるのではないでしょうか?

function getInventors(cat,text) {
var xmlhttp;
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("content").innerHTML = xmlhttp.responseText;
    }
}

xmlhttp.open("GET", "getBrowse.php?CAT="+cat+"&TEXT="+text, true);
xmlhttp.send();

setTimeout(function() {
var mySwiper2 = new Swiper('.swiper-container',{
centeredSlides: true,
autoplay: 7000,
slidesPerView: 'auto',
watchActiveIndex: true,
onTouchMove: function(swiper){
mySwiper2.startAutoplay();
}
}) }, 1000 /*changing this to a much higher number fixes it)*/;
}

アドバイスありがとうございます!

4

1 に答える 1

0

スワイパーが間違った場所で初期化されていたことがわかりました。このように外部ではなく、Ajax 関数自体の内部で初期化されているはずです。

function getInventors(cat,text) {
var xmlhttp;
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("content").innerHTML = xmlhttp.responseText;

var mySwiper2 = new Swiper('.swiper-container',{
    centeredSlides: true,
    autoplay: 7000,
    slidesPerView: 'auto',
    watchActiveIndex: true,
    onTouchMove: function(swiper){
        mySwiper2.startAutoplay();
    }
});

}
}

それは今動作します:)

于 2015-04-23T14:03:50.780 に答える