Php 内容仅在延迟时显示

Php 内容仅在延迟时显示,php,ajax,jquery-ui-dialog,Php,Ajax,Jquery Ui Dialog,通过Ajax将内容加载到div时出现问题。 当我点击一个按钮时,我首先打开一个对话框。对话框将加载到php文件中。 在对话框的代码之后,我放置了一些代码,用于将某些内容加载到该php文件的div中。我的代码: function edit(serverpage, persoonid) { $(".opendg").dialog( { open:function () { $(this).load('/location/php/'

通过Ajax将内容加载到div时出现问题。
当我点击一个按钮时,我首先打开一个对话框。对话框将加载到php文件中。
在对话框的代码之后,我放置了一些代码,用于将某些内容加载到该php文件的div中。我的代码:

function edit(serverpage, persoonid)
{
   $(".opendg").dialog(
    {
        open:function ()
        {
            $(this).load('/location/php/' + serverpage);
        },
        title: 'Change!',
        autoOpen: true,
        closeOnEscape: true,
        height: 335,
        width: 650,
        modal: true,
        resizable: false,
        close: function(){},
        buttons:
            {
                "Change": function()
                {
                    sendedit(serverpage, persoonid);
                    return;
                },
                "Cancel": function()
                {
                    $(this).dialog("close");
                }
            }
    });
    xmlhttp = ajaxFunction();
    if (xmlhttp)
    {
        var url = "/location/php/" + serverpage;
        var pagelength = serverpage.length;
        var value = serverpage.substr(0,pagelength - 4);
        var params = "edit=" + value + "&id=" + persoonid;
        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 != '')
               {
                value = value + 'form';
                alert('test');
                document.getElementById(value).innerHTML=xmlhttp.responseText;
                }
            }
        }
        xmlhttp.send(params);
    }
}
正如您所见,我在将responseText发送到div之前发出了警报。
我这样做是因为没有警报我会得到一个空表单
第一次打开对话框时,我什么也看不到。重新打开后,我看到一个我想要的内容的短闪光,但在毫秒内消失

生成内容的代码:

<?php
    if($_POST['edit'] == 'editpersoneel')
    {
        //Query run here to get the results
        echo '<form>
            <table>
                <tr>
                    <td class="first">
                        Location: 
                    </td>
                    <td>
                        <input type="text" value="'.$result['location'].'" />
                    </td>
                    <td class="first">
                        phonenumber
                    </td>
                    <td>
                        <input type="text" value= "'.$result[phonenumber'].'" />
                    </td>
                </tr>
            </table>
        </form>';
    }
    ?>
<div id="editpersoneelform"></div>

我不太明白为什么ajax调用和serverpage中的值解析如此复杂,但也许您有一个JS代码用于多个地方的多个编辑函数。。。但说到点子上:

看起来您的
没有包含在HTML中,而AJAX是从HTML中调用的

假设您有类似的HTML文件(当您需要以原始方式调用AJAX时,我建议至少使用jQuery来处理元素):


调整
功能编辑(serverpage,persoonid){
$(“.opendg”)。对话框({
打开:函数(){
$(this.load('/location/php/'+serverpage);
},
标题:“改变!”,
自动打开:对,
closeOnEscape:没错,
身高:335,
宽度:650,
莫代尔:是的,
可调整大小:false,
关闭:函数(){},
按钮:{
“更改”:函数(){
sendedit(serverpage,persoonid);
返回;
},
“取消”:函数(){
$(此).dialog(“关闭”);
}
}
});
xmlhttp=ajaxFunction();
if(xmlhttp){
var url=“/location/php/”+serverpage;
var pagelength=serverpage.length;
var值=serverpage.substr(0,pagelength-4);
var params=“edit=“+value+”&id=“+persoonid;
open(“POST”,url,true);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
setRequestHeader(“内容长度”,参数长度);
setRequestHeader(“连接”,“关闭”);
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
如果(xmlhttp.responseText!=''){
价值=价值+形式;
警报(值);
$('div#'+value).html(xmlhttp.responseText);
}
}
}
xmlhttp.send(params);
}
}
然后就有了由AJAX调用的PHP文件:

<?php
if($_POST['edit'] == 'editpersoneel') {
    //Query run here to get the results
    $form = '<form>
        <table>
            <tr>
                <td class="first">Location: </td>
                <td><input type="text" value="'.$result['location'].'" /></td>
                <td class="first">phonenumber</td>
                <td><input type="text" value= "'.$result[phonenumber'].'" /></td>
            </tr>
        </table>
    </form>';
    echo $form;
}
?>

我不太明白为什么ajax调用和serverpage中的值解析如此复杂,但也许您有一个JS代码用于多个地方的多个编辑函数。。。但说到点子上:

看起来您的
没有包含在HTML中,而AJAX是从HTML中调用的

假设您有类似的HTML文件(当您需要以原始方式调用AJAX时,我建议至少使用jQuery来处理元素):


调整
功能编辑(serverpage,persoonid){
$(“.opendg”)。对话框({
打开:函数(){
$(this.load('/location/php/'+serverpage);
},
标题:“改变!”,
自动打开:对,
closeOnEscape:没错,
身高:335,
宽度:650,
莫代尔:是的,
可调整大小:false,
关闭:函数(){},
按钮:{
“更改”:函数(){
sendedit(serverpage,persoonid);
返回;
},
“取消”:函数(){
$(此).dialog(“关闭”);
}
}
});
xmlhttp=ajaxFunction();
if(xmlhttp){
var url=“/location/php/”+serverpage;
var pagelength=serverpage.length;
var值=serverpage.substr(0,pagelength-4);
var params=“edit=“+value+”&id=“+persoonid;
open(“POST”,url,true);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
setRequestHeader(“内容长度”,参数长度);
setRequestHeader(“连接”,“关闭”);
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
如果(xmlhttp.responseText!=''){
价值=价值+形式;
警报(值);
$('div#'+value).html(xmlhttp.responseText);
}
}
}
xmlhttp.send(params);
}
}
然后就有了由AJAX调用的PHP文件:

<?php
if($_POST['edit'] == 'editpersoneel') {
    //Query run here to get the results
    $form = '<form>
        <table>
            <tr>
                <td class="first">Location: </td>
                <td><input type="text" value="'.$result['location'].'" /></td>
                <td class="first">phonenumber</td>
                <td><input type="text" value= "'.$result[phonenumber'].'" /></td>
            </tr>
        </table>
    </form>';
    echo $form;
}
?>

如果您正在使用jquery,请使用
$。ajax
@experimentX:我不能,因为这是一个学校项目:),我需要以这种方式使用ajax(在jquery之外)。。。但是谢谢你的提示!还请发布您的html代码(如果有)和引发的事件。如果您使用jquery,请使用
$。ajax
@experimentX:我不能,因为这是一个学校项目:),我需要以这种方式使用ajax(在jquery之外)。。。但是谢谢你的提示!请同时发布您的html代码(如果有)和触发的事件。谢谢您的帮助,但我没有让它工作。还是一样的问题。也在一个不同的页面上,然后调整第一个div在editpersoneel.php上,第二个(带有调用)在personeel.phpYes上,这就是我所指出的-必须在AJAX调用(so)所在的同一页面上…我尝试将它放在
<?php
if($_POST['edit'] == 'editpersoneel') {
    //Query run here to get the results
    $form = '<form>
        <table>
            <tr>
                <td class="first">Location: </td>
                <td><input type="text" value="'.$result['location'].'" /></td>
                <td class="first">phonenumber</td>
                <td><input type="text" value= "'.$result[phonenumber'].'" /></td>
            </tr>
        </table>
    </form>';
    echo $form;
}
?>