index.php:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="scripts.js"></script>
<a href="" onclick="Delete('<?php print $row['id'] ?>')">delete</a>
scripts.js:
function Delete(n) {
if(confirm("Удалить запись?")) {
$.post("./delete.php",{id:n});
setTimeout("location.reload(true)", 1000);
}
}
delete.php:
<?php
// ...
// инициализация БД и т.д.
// ...
print "hello!";
if(isset($_POST['id']))
del_from_table($_POST['id']);
?>
Это дело работает (функция del_from_table отрабатывается), но firebug не показывает ответ («hello!») post-запроса и ругается на jquery на строчку 5252:
// Send the data
5251 try {
5252 xhr.send( type === "POST" || type === "PUT" || type === "DELETE" ? s.data : null );
5253 } catch(e) {
5254 jQuery.handleError(s, xhr, null, e);
5255 // Fire the complete handlers
5256 complete();
5257 }
Причем изначально все работало и я видел ответ в консоли, но после каких-то манипуляций с кодом перестало.
И попутный вопрос - после post-запроса я поставил костыль setTimeout(«location.reload(true)», 1000) чтобы была небольшая задержка перед обновлением страницы, иначе не всегда успевали обработаться запрос и новая страница была неактуальной. Впрочем, даже с задержкой в 1сек не всегда получается. Как тут правильно сделать?