1

当我单击按钮时,我正在编写获取手风琴内容的代码。使用 ajax 调用从服务器接收手风琴的内部内容。这些内容显示在对话框中。

现在的问题是内容(原本应该是手风琴内容)可以在对话框中看到为简单的 html 而不是手风琴(带有按钮)。如果我只是在 html 文件中使用相同的内容(将从服务器接收到的内容粘贴到“”中,它们工作正常,我可以在对话框中看到手风琴。

怎么了?是否与手风琴内容需要事先提供有关。任何人都可以提出解决此问题的方法。(手风琴的内容每次都会改变,这就是从服务器接收它们的原因)

Javascript函数是:

<script>
     $(document).ready(function() {
    $("#accordion").accordion({
    autoHeight: false
});
     </script>


<script language="javascript"> 

    function Faulttest() 
    {

    var xmlhttp;
    if (window.XMLHttpRequest)
    {xmlhttp=new XMLHttpRequest();}
    else
    {xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
    xmlhttp.onreadystatechange=function()
    {
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    Here we get the contents which should be inside the accordion which we receive from the server



> **document.getElementById("accordion").innerHTML=xmlhttp.responseText;**



    }
    }
    xmlhttp.open("GET","http://****/Anomalies/index.jsp",true);
    xmlhttp.send();
}

页面的html内容是:

<body style="font-size:62.5%;"  >
        <div id="page">         
        <div id="header"><h1>header</h1></div>          
        <div id="body" >
            <h1>content top </h1>                       
        <div id="dia">
        <div id="dialog" title="Detailed FeedBack"><div id="accordion">

        // CODE SHOULD GO HERE


        </div>
            </div>
                </div>
   <button type="button" onclick="Faulttest();">Click Me!</button>  
  </body>
4

2 回答 2

2

在不确切知道手风琴脚本如何工作的情况下,我假设这是因为脚本假定#accordion初始化时的内容是脚本需要使用的内容。

如果您的实现可能,请将空divs 放入#accordion(或手风琴脚本为子节点指定的任何内容)中,然后动态填充它们。

否则,等待在#accordion节点上初始化手风琴,直到 AJAX 调用返回之后。

于 2012-07-25T17:11:13.650 回答
0

实际上我们只需要销毁并重新创建手风琴。这可以通过以下方式完成:

$('#accordion').append(xmlhttp.responseText).accordion('destroy').accordion();
于 2012-07-25T20:13:21.170 回答