load() и getscript() не всегда работают

На моей странице index.php я использую jquery load() для загрузки других страниц в div "bodycontent". Это прекрасно работает и денди. Я отключаю обычные ссылки и должен сделать href именем страницы без php, и снова включу php, когда произойдет load (). Одна из моих страниц, которую я загружаю в div, у меня всплывают диалоговые окна с ссылками.

Когда вы изначально заходите на страницу, это работает нормально, но если вы вообще отказываетесь, нажимая "продукты" или любую другую ссылку на странице, а затем возвращаетесь к "дому" и нажимаете ссылку "читать дальше", диалоговые окна не будут отображаться снова. Вы должны обновить, и тогда он будет работать, пока вы не нажмете ссылку снова. Кроме того, это хорошо работает в моем IE 9, версия 9.8.8, но старый IE на работе (например, 8), и по крайней мере еще один человек хром диалоговое окно не появится вообще. На моей работе также есть IE9, с которыми это просто не сработает, несмотря на то, что я удаляю временные интернет-файлы и т. Д. На моем компьютере он отлично работает при новых загрузках Firefox, Chrome и IE, поэтому мне также интересно, если мой метод обратно совместим и кросс-браузер, и если нет, что я могу сделать, чтобы сделать это так. Я также использую скрипт get в функции с загрузкой, чтобы получить jquery, jquery ui и мой файл javascript для диалога.

Я также смотрел на такие вещи, как ajaxcomplete и тому подобное, но, будучи моим изначально, я не совсем уверен, что делать.

Главная страница моего основного сайта, загружающая home.php изначально (новости, т. Д.)

Поиграйте с моим навигационным JavaScript, который делает страницы неактивными / активными и load()/getscript в div

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();
            ?>

Итак, еще раз, в основном мне нужно понять, почему это не работает после того, как я нажму на ссылку, и как она может быть более совместимой с браузерами и обратно.

1 ответ

Решение

Все, что мне нужно было сделать, это добавить:

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

до загрузки (), и это работает на каждом компьютере, который я пробовал до сих пор. Я предполагаю, что div нужно очистить перед загрузкой в ​​него нового html, поэтому, возвращаясь назад, он сохранял js и тому подобное от getscript и путаницы. Также сохранил только один js-файл, который требовался только для home.php для загрузки, и поместил все остальное на страницу индекса (как и должно быть в любом случае).

Другие вопросы по тегам