jQuery弹出显示旧内容,而不是新内容


jQuery pop up showing old content not the new content

我在弹出jQuery时遇到问题。我通过ajax加载了一些内容。我希望这些内容是一条弹出消息(onclick事件)。在我第一次点击弹出链接时,它会显示正确的内容。在第一次加载内容(在Ajax中)后,它会显示正确的内容,但下次每当我单击弹出链接时,它都会显示第一次加载的旧内容。这是代码。。

<div id="company">
<div class="video-text">
<script>
function popup () {
     $( "#dialog" ).dialog({
         modal: true,
         buttons: {
         Ok: function() {
         $( this ).dialog( "close" );
         }
         }
         });
};
</script>

            <?php if (!empty($video_details)) {?>  
            <p><?php echo $video_details['companyName'];?></p>
            <span class="txt-small"><?php  
            $company_desc = $video_details['companyDesc'];
            echo substr("$company_desc", 0, 60); 
            //echo $company_desc;
            ?> 
            </span> 
             <input type="submit" onclick="popup()" value="Read more..">
<div id="dialog" title="Read more..">
<p><?php echo $company_desc;?></p>
</div>
<?php }?>
  </div>

Ajax:

var xmlhttp;
       if (window.XMLHttpRequest)
         {// code for IE7+, Firefox, Chrome, Opera, Safari
         xmlhttp=new XMLHttpRequest();
         }
       else
         {// code for IE6, IE5
         xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
         }
       xmlhttp.onreadystatechange=function()
         {
         if (xmlhttp.readyState==4 && xmlhttp.status==200)
           {
           document.getElementById("company").innerHTML=xmlhttp.responseText;
           }
         }
       xmlhttp.open("POST","http://172.16.1.181:85/mydomain/home/load_company/",true);
       xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
       var data = 'id='+current.id;
       xmlhttp.send(data);
       //alert(current.id);
       }

在这里,我将我的id发布到load_company控制器,它在companydiv中呈现内容和加载。。加载公司div 中的所有内容

<p><?php echo $company_desc;?></p>包含弹出内容。。这是我的firebug帖子

id 213

响应

<div id="company">
<div class="video-text">
<script>
function popup () {
     $( "#dialog" ).dialog({
         modal: true,
         buttons: {
         Ok: function() {
         $( this ).dialog( "close" );
         }
         }
         });
};
</script>

           <span class="txt-small">Lorem Ipsum is simply dummy text of the printing and typeset 
            </span> 
             <input type="submit" onclick="popup()" value="Read more..">
<div id="dialog" title="Read more..">
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>
</div>
  </div>

提前感谢。。!!

popup();函数只显示对话框,在显示对话框之前,您需要让该函数也执行ajax请求。

另外,我可以问一下,既然您似乎已经在使用这个库,为什么不使用jQuery for AJAX吗?

类似于:

function popup () {
    $.post( "test.php", { id: current.id }, function( data ) {
    $("#company").innerHTML=data;
    $( "#dialog" ).dialog({
        modal: true,
        buttons: {
        Ok: function() {
            $( this ).dialog( "close" );
        }
        }
    });
    });
}

此外,您还需要在内容元素上设置一个ID:<p id="content"><?php echo $company_desc;?></p>

Submit按钮只是弹出名为"dialog"的div。看看负责更新变量$company_desc的函数。

我猜您的if(!empty($video_details))语句不允许您更新company_desc变量。改变你的逻辑。

在Ajax中,您必须更新对话框div,但在您的代码中,您更新了公司div,并显示了对话框div。