0

我的 jquery ui 按钮有问题(我认为)。
我尝试通过 AJAX 加载收件箱,我得到了所有数据和 css,但不知何故,带有 jquery 按钮的脚本不起作用。
我的页面结构如下:

ob_start();
session_start();
if(isset($_SESSION['rol']))
{
    if(isset($_POST['getnewmail']))
    {
        //Do some query stuff here
        //Print the output through a foreach...
        echo '<div class="jbutton">';
        foreach($result as $key => $value)
        {
            foreach($value as $y => $mailid)
            {
                //echo the stuff
            }
        }
        echo '</div>';
    }
}

你可以猜到我在 foreach 之前调用 div 上的 jquery 代码。代码是:

$(function() {
    $("button, a", ".jbutton").button();
});

我的 AJAX 代码设置了 $_POST['getnewmail']。

function loadinbox(serverpage, contentid)
{
    var xmlhttp = ajaxFunction();
    if (xmlhttp)
    {
        var params = "getnewmail=settrue";
        var url = "/location/php/" + serverpage;
        xmlhttp.open("POST", url, true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.setRequestHeader("Content-length", params.length);
        xmlhttp.setRequestHeader("Connection", "close");
        xmlhttp.onreadystatechange = function()
        {
            if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
            {
               if(xmlhttp.responseText != "")
               {
                    document.getElementById(contentid).innerHTML=xmlhttp.responseText;
                    return;
               }
            }
        }
        xmlhttp.send(params);
    }
}

问题是当我尝试在没有 AJAX 的情况下将邮件加载到收件箱时,我得到了我想要的。
但是,当我将代码移入 if 语句并使用 AJAX 调用它时,一切都失败了。

有人可以解释我做错了什么吗?为什么 jquery ui 按钮在使用 AJAX 加载到 div 时不起作用?虽然它在通过普通 php 加载且没有 AJAX 时确实有效。

更新:http:
//img35.imageshack.us/i/30fkdl30.png/

这是一张图片来说明问题所在。

4

2 回答 2

1

据我所知,在div从服务器接收到内容之前调用了 javascript 代码。您应该在.button()设置.innerHtmldiv

于 2011-04-17T21:13:38.297 回答
0

谢谢,这对我也有用。这是我最后得到的:

首先,我们发送 AJAX 响应,其次,我们重新初始化所有按钮。

xmlhttp.onreadystatechange=function()
{
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
     {
        document.getElementById("users-contain").innerHTML=xmlhttp.responseText;

        //recall JQeuryUI buttons initialization.
        $("input:submit", ".demo" ).button();

     }

}

于 2012-05-18T18:50:23.783 回答