當通過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>
我試着用$(文件)。就緒的語句從jQuery的解決這一點,但在任何順序沒有工作。
我認爲問題是div在發送內容時未知(以某種方式)Ajax,但我確實得到了結果。
所以我的問題是:
- 爲什麼我的代碼工作時,我把一個警報呢? (我只需要在這裏打開一次對話框)
- 爲什麼我的內容在1毫秒內被加載和卸載?爲什麼我不得不打開對話框兩次?
UPDATE
當我把警報發送的responseText我不得不打開對話框前兩次我能看到alertbox後。
UPDATE 2
調用事件中的代碼:
<div class="jbutton">
<a onclick="edit(\'editpersoneel.php\',\''.$b['id'].'\')">Adjust</a>
</div>
此按鈕被置於一個jquery-UI-手風琴內。
如果您使用的是jQuery,請使用'$。ajax' – 2011-04-18 11:19:34
@experimentX:我不能因爲它是一個學校項目:),我需要使用Ajax這種方式(jQuery以外)...但謝謝你的提示! – Mixxiphoid 2011-04-18 11:22:11
請同時發佈您的html代碼(如果有的話)和事件發生.. – 2011-04-18 11:33:22