Я хотел бы знать, как лучше всего удалять записи из активной базы данных и мгновенно обновлять страницу. В данный момент я использую ajax со следующим методом javascript:
function deleterec(layer, pk) {
url = "get_records.php?cmd=deleterec&pk="+pk+"&sid="+Math.random();
update('Layer2', url);
}
если cmd = deleterec на странице php, удаление выполняется, когда первичный ключ = pk. Это прекрасно работает, так как в записи удаляется, однако страница не обновляется.
Мой метод обновления довольно прост:
function update(layer, url) {
var xmlHttp=GetXmlHttpObject(); //you have this defined elsewhere
if(xmlHttp==null) {
alert("Your browser is not supported?");
}
xmlHttp.onreadystatechange = function() {
if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
document.getElementById(layer).innerHTML=xmlHttp.responseText;
} else if (xmlHttp.readyState==1 || xmlHttp.readyState=="loading") {
document.getElementById(layer).innerHTML="loading";
}
//etc
}
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
как удалить или изменить запись и обновить страницу.
В данный момент моя ajax-инфраструктура работает, передавая данные в метод обновления javascript, который отлично работает для выбора разных запросов для отображения в разных слоях.
Я хочу добавить функциональность для удаления или изменить записи определенным образом.
Мне интересно, возможно ли при нажатии на ссылку выполнить запрос, а затем вызвать мой метод обновления и обновить страницу tge. Есть ли простой способ сделать это, учитывая мои методы обновления?
Я бы хотел избежать переписывания моего метода обновления, если это возможно.
Был бы самый простой способ сделать так, чтобы страница php (только в слое) перезагрузилась после выполнения запроса mysql?
Или создать новый метод "alterstatus", который передаст delete или watch как параметр, и php выполнит соответствующий запрос и затем обновит страницу?
edit: ссылки генерируются так. deleterec будет вызываться из сгенерированной дополнительной ссылки.
{
$pk = $row['ARTICLE_NO'];
echo '<tr>' . "\n";
echo '<td><a href="#" onclick="updateByPk(\'Layer2\', \'' . $pk . '\')">'.$row['USERNAME'].'</a></td>' . "\n";
echo '<td><a href="#" onclick="updateByPk(\'Layer2\', \'' . $pk . '\')">'.$row['shortDate'].'</a></td>' . "\n";
echo '<td><a href="#" onclick="updateByPk(\'Layer2\', \'' . $pk . '\')">'.$row['ARTICLE_NAME'].'</a></td>' . "\n";
echo '<td><a href="#" onclick="deleteRec(\'Layer2\', \'' . $pk . '\')">'.$row['ARTICLE_NAME'].'</a></td>' . "\n";
echo '</tr>' . "\n";
}
edit: метод обновления не может быть изменен, так как он используется методами updateByPk и updateBypg, которым нужен слой.