1

index.phpページで、jquery load()を使用して、div「bodycontent」内の他のページをロードします。これはうまく機能し、ダンディです。通常のリンクを無効にし、phpを使用せずにhrefをページ名にし、load()が発生したときにphpにタグを付け直す必要があります。divにロードしているページの1つで、リンクにダイアログボックスがポップアップ表示されます。

最初にページに移動したときはこれで問題ありませんが、ページ上の「製品」またはその他のリンクをクリックして離れ、「ホーム」に戻って「続きを読む」リンクをクリックすると、 、ダイアログボックスは再び表示されません。更新する必要があります。その後、リンクをもう一度クリックするまで機能します。また、これは私のIE 9、ver9.0.8では正常に機能しますが、古いIE(8など)が動作しており、少なくとも1人の他の人がダイアログボックスをまったく表示しません。一時的なインターネットファイルなどを削除したにもかかわらず、これが機能しないIE9も私の仕事にあります。私のコンピューターでは、Firefox、Chrome、IEの新しいダウンロードで問題なく動作するので、私の方法が下位互換性があり、クロスブラウザーであるかどうか、そうでない場合はそれを実現するために何ができるかについても疑問に思っています。私'

ajaxcompleteなども見てきましたが、最初はうまくいったのでどうしたらいいのかよくわかりません。

最初にhome.phpをロードする私のサイトのメインインデックスページ(ニュースなど)

ナビゲーションjavascriptをいじると、div内のページが非アクティブ/アクティブおよびload()/getscriptになります

dialog.js:

$(document).ready(function() {
$('#dialogbox').dialog({
    autoOpen: false,
    title: 'Loading title...', 
    modal: true,
    width: 500,
    height: 400
});
});
function readMore(id,title,cat,desc,post,auth) { 
//alert(id +","+ title +","+ cat +","+ desc +","+ post +","+ auth); 
var $dialog = $('#dialogbox').html('Category: '+ cat +'<br/>'+ desc +'<br/>---------------------------------<br/>Posted by: '+ auth +'<br/>' + post);
$dialog.dialog('open');
$dialog.dialog("option","title",title);
} 

関数readMoreにプルする方法:

            <?php
                require('config/dbconfig.php');
                $query = "SELECT * FROM news ORDER BY id DESC LIMIT 4";
                if ($stmt = $mysqli->prepare($query)) {
                    /* execute statement */
                    $stmt->execute();

                    /* bind result variables */
                    $stmt->bind_result($idn, $titlen, $categoryn, $descn, $postdaten, $authorn);

                    /* fetch values */
                    while ($stmt->fetch()) {
                        //echo 'id: '. $id .' title: '. $title;
                        echo "<table border='0'>";
                        $shortDescLengthn = strlen($descn);
                        if ($shortDescLengthn > 106) {
                            $sDCutn = 106 - $shortDescLengthn;
                            $shortDescn = substr($descn, 0, $sDCutn);
                        } else {
                            $shortDescn = $descn;
                        }
                        echo "<h1>$titlen</h1>"; 
                        echo "<tr><td>$shortDescn...</td></tr>"; 
                        echo '<tr><td><a href="javascript:void(0);" onclick="' 
                        . 'readMore(' . $idn . ',' . htmlspecialchars(json_encode($titlen)) . ',' 
                        . htmlspecialchars(json_encode($categoryn)) . ',' 
                        . htmlspecialchars(json_encode($descn)) . ',' . htmlspecialchars(json_encode($postdaten)) . ',' 
                        . htmlspecialchars(json_encode($authorn)) . ')">Read More</a></td></tr>'; 
                        echo "<tr><td>Written by: $authorn</td></tr>"; 
                        echo '<tr><td><img src="images/hardcore-games-newsbar-border.png" width="468px" /></td></tr>'; 
                    }
                    echo "</table><br />";

                    /* close statement */
                    $stmt->close();
                }

                /* close connection */
                $mysqli->close();
            ?>

繰り返しになりますが、基本的には、リンクをクリックした後にこれが機能しない理由と、クロスブラウザおよびバックワードブラウザとの互換性を高める方法を確認する必要があります。

4

1 に答える 1

0

私がしなければならなかったのは追加することだけでした:

$('#bodycontent').empty();

load()の前に、これまでに試したすべてのコンピューターで動作します。新しいhtmlをロードする前にdivを空にする必要があると推測しているので、元に戻すと、jsなどがgetscriptや混乱を防ぐことができました。また、home.phpのみがロードする必要のある単一のjsファイルのみを保持し、他のすべてをインデックスページに配置します(とにかくそうあるべきだったように)。

于 2012-08-03T03:18:27.727 に答える