У меня проблема при загрузке контента в div через Ajax.
Я начинаю с открытия диалогового окна, когда нажимаю на кнопку. Диалоговое окно загружается в файл php.
Сразу после кода для диалогового окна я поместил некоторый код для загрузки определенного содержимого в div в этом php-файле. Мой код:
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>
Я пытался решить эту проблему с помощью оператора $ (document) .ready из jQuery, но не работал ни в каком порядке.
Я думаю, что проблема в том, что div неизвестно (как-то) Ajax при отправке контента, но я все же получаю результат.
Итак, мой вопрос:
- Почему мой код работает, когда я помещаю в него предупреждение? (Мне нужно открыть диалоговое окно только один раз)
- Почему мой контент загружается и выгружается через одну миллисекунду? И почему мне пришлось дважды открыть диалог?
UPDATE
Когда я помещаю предупреждение после отправки responseText, мне нужно дважды открыть диалоговое окно, прежде чем я вижу окно предупреждения.
ОБНОВЛЕНИЕ 2
Код, который вызывает событие:
<div class="jbutton">
<a onclick="edit(\'editpersoneel.php\',\''.$b['id'].'\')">Adjust</a>
</div>
Эта кнопка находится внутри jquery-ui-гармошки.