jquery ajax post – как вернуть данные?

У меня есть страница профиля, содержащая серию изображений. Я хочу использовать 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 знал, был ли успех удачным или неудачным?

Solutions Collecting From Web of "jquery ajax post – как вернуть данные?"

После того как запрос на отправку 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'; } 

У вас есть два очевидных варианта, о которых я могу думать:

  1. Ваш возвращенный текст должен появиться в параметре data предоставленном для вашей функции обратного вызова success – однако вам, вероятно, также потребуется убедиться, что он находится в формате, совместимом с MIME Content-Type возвращаемым вашим PHP, или jQuery может жаловаться, что он может " t разобрать его или:

  2. Отправляйте сообщение типа 5xx Failure с вашего PHP с помощью функции header() если удаление не работает. Затем это должно вызвать обратный вызов error AJAX, который вам нужно будет предоставить.

Из delete.php верните, удалось ли удаление или нет. В успехе даже проверьте эти данные и обработайте их соответствующим образом.

НТН.