У меня есть страница профиля, содержащая серию изображений. Я хочу использовать jQuery, чтобы позволить пользователю удалять изображение с сервера и обновлять страницу без перезагрузки всей страницы. Когда он будет успешным, он удалит содержащее изображение div с страницы. Моя функция удаления – PHP; довольно просто:
delete.php
<?php if (isset($_POST['id'])) { if (unlink($_POST['id'])) { echo "success"; } else { echo "failure"; } } ?>
(Уже существует аутентификация пользователя, чтобы получить их на странице, которая вызывает delete.php.)
Вот html одного отображаемого изображения – может быть до 5 из этих кусков один за другим:
<div class="box"> <img src="uploads/t_10DOT_22C_1111_1300370702_3.jpg" /> <h5><a rel="external" href="uploads/10DOT_22C_1111_1300370702_3.jpg">See full version</a></h5> <a href="#" id="10DOT_22C_1111_1300370702_3.jpg" class="delete" onclick="return ConfirmDelete();" >x</a> <div class="clear"></div> </div>
До сих пор мой jQuery выглядит так:
$(document).ready(function() { $('#load').hide(); }); $(function() { $(".delete").click(function() { $('#load').fadeIn(); var commentContainer = $(this).parent(); var id = $(this).attr("id"); var string = 'id='+ id ; $.ajax({ type: "POST", url: "delete.php", data: string, cache: false, success: function(data){ commentContainer.slideUp('slow', function() {$(this).remove();}); $('#load').fadeOut(); } }); return false; }); });
Часть, о которой я беспокоюсь, – это пост ajax. Как часть успеха действительно работает? Что мне нужно сделать в моем php-файле, чтобы ajax знал, был ли успех удачным или неудачным?
После того как запрос на отправку ajax завершил выполнение файла, на который был отправлен запрос, если не было ошибки, код, который вы добавляете в разделе «Успех», выполняется, в этом случае
success: function(data){ /*The code you need*/ });
В предыдущей части, если код выполнен, переменная «данные» содержит все, что вы возвращаете из своего php-файла, это могут быть данные, это может быть просто «истинное» или «ложное», вы выбираете, что отправлять, чтобы jQuery знает, был ли он успешным.
Надеюсь это немного поможет.
Изменить примечание:
function(applyData){ if ( applyData.toString() == 'invalid' ){ $('#pollError').html('Global styles cannot be modified.'); $('#pollNotice').html(''); } else{ $('#pollNotice').html('The changes to the style have been applied.'); } });
Предыдущий пример – живой пример того, что вы можете сделать внутри функции в событии «success». Там я обрабатываю «недействительный» статус, и в противном случае он успешный, после этого я обновляю пару DIV в случае недействительности или обновляю один DIV в случае успеха.
Это выполняется php:
if ( !$db->isGlobal($id_css)){ $data['id_poll'] = $id_poll; $data['id_css'] = $id_css; $data['css'] = $css; $db->applyCssChanges($data); } else{ echo 'invalid'; }
У вас есть два очевидных варианта, о которых я могу думать:
Ваш возвращенный текст должен появиться в параметре data
предоставленном для вашей функции обратного вызова success
– однако вам, вероятно, также потребуется убедиться, что он находится в формате, совместимом с MIME Content-Type
возвращаемым вашим PHP, или jQuery может жаловаться, что он может " t разобрать его или:
Отправляйте сообщение типа 5xx Failure
с вашего PHP с помощью функции header()
если удаление не работает. Затем это должно вызвать обратный вызов error
AJAX, который вам нужно будет предоставить.
Из delete.php верните, удалось ли удаление или нет. В успехе даже проверьте эти данные и обработайте их соответствующим образом.
НТН.