Javascript load()和getscript()并不总是有效

Javascript load()和getscript()并不总是有效,javascript,ajax,jquery,getscript,Javascript,Ajax,Jquery,Getscript,在index.php页面上,我使用jquery load()加载div“bodycontent”中的其他页面。这个很好用。我禁用常规链接,并且必须使href成为页面名称,而不使用php,并在load()发生时重新标记php。我的一个页面正在加载到div中,链接上会弹出对话框 当您最初进入页面时,这可以正常工作,但如果您通过单击“产品”或页面上的任何其他链接来避开,然后返回“主页”并单击“阅读更多”链接,对话框将不会再次显示。您必须刷新,然后它将工作,直到您再次单击链接。此外,这在我的IE9(9.

在index.php页面上,我使用jquery load()加载div“bodycontent”中的其他页面。这个很好用。我禁用常规链接,并且必须使href成为页面名称,而不使用php,并在load()发生时重新标记php。我的一个页面正在加载到div中,链接上会弹出对话框

当您最初进入页面时,这可以正常工作,但如果您通过单击“产品”或页面上的任何其他链接来避开,然后返回“主页”并单击“阅读更多”链接,对话框将不会再次显示。您必须刷新,然后它将工作,直到您再次单击链接。此外,这在我的IE9(9.0.8版)中运行良好,但旧版IE(如8版)和至少一个其他人的chrome对话框根本不会出现。在我的工作中也有IE9,尽管我删除了临时互联网文件等,但这是行不通的。在我的电脑上,它可以在全新的firefox、chrome和IE下载上正常工作,所以我也想知道我的方法是否是向后兼容和跨浏览器的,如果不是,我能做些什么来做到这一点。我还在一个函数中使用get脚本加载jquery、jqueryui和我的javascript文件

我也看过类似ajaxcomplete之类的东西,但作为我的人,我一开始是有效果的,我真的不知道该怎么办

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);
} 
$(文档).ready(函数(){
$(“#对话框”)。对话框({
自动打开:错误,
标题:“正在加载标题…”,
莫代尔:是的,
宽度:500,
身高:400
});
});
函数readMore(id、title、cat、desc、post、auth){
//警报(id+”、“+标题+”、“+cat+”、“+desc+”、“+post+”、“+auth”);
var$dialog=$('#dialogbox').html('Category:'+cat+'
'+desc+'
---------------------------------------
发布人:'+auth+'
'+post); $dialog.dialog('open'); $dialog.dialog(“选项”、“标题”、“标题”); }
我如何使用函数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();
            ?>


因此,基本上,我需要了解为什么单击链接后此功能不起作用,以及它如何更兼容跨浏览器和向后浏览器。

我所要做的就是添加:

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

在load()之前,它可以在我迄今为止尝试过的每台计算机上运行。我猜在加载新的html之前,需要清空div,所以回想起来,它是为了防止js之类的东西被getscript弄乱。还只保留了home.php只需要加载的单个js文件,并将其他所有内容都放在索引页中(就像它本来应该那样)。

哪个对话框?如果动态加载内容,是否重新实例化对话框?Jquery对话框。它也张贴在上面的代码条中,用于启动。每次我调用load时,它都会使用get脚本,php中的链接会调用对话框的js函数,这就是home.php上的链接所做的一切,它是通过索引页上的load()拖动的。我不确定重新实例化对话框的确切含义,但如果它将home.php设置为加载到div中,并且read more链接会拉动对话框,然后转到页面上的一个链接,再回到home.php,从我所知道的任何方面来看,它做的一切都完全相同。我的意思是,我在哪里单击以获得一个对话框?页面上的“阅读更多”链接。