Ниже приведен запрос ajax.
$.post('delete.php', {'deletearray':deletearray, 'dir':dir}, function(deleted, undeleted){ if(undeleted == 0) { alert('All ' + deleted + ' files delted from the server'); } else { alert(deleted + ' files deleted and ' + undeleted + ' files could not be deleted'); } }, 'json');
и здесь идет delete.php
<?php if(isset($_POST['deletearray'])) { $files = $_POST['deletearray']; $dir = $_POST['dir']; $deleted = 0; $undeleted = 0; foreach($files as $file) { if(unlink($dir.$file) && unlink($dir.'thumb/'.$file)) { $deleted ++; } else { $undeleted ++; } } echo json_encode($deleted, $undeleted); } return; ?>
При запуске кода он успешно удаляет файлы, но не отображается сообщение.
Я также попытался изменить запрос ajax как:
$.post('delete.php', {deletearray:deletearray, dir:dir}, function(deleted, undeleted){ alert("php finished"); }, 'json');
все же он не отображает сообщение. Поэтому я думаю, что что-то не так в файле delete.php. Пожалуйста помоги.
Лучший способ сделать jquery + ajax + php следующий:
JQuery:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script type="text/javascript"> function do_ajax() { //set data var myData = new Array(); myData.push({name:'deletearray',value:'deletearray'}); myData.push({name:'dir',value:'dir'}); //ajax post $.ajax({ dataType: 'json', url: 'delete.php', type: 'post', data: myData, success: function(returnData) { if(returnData.undeleted == 0) { alert('All ' + returnData.deleted + ' files delted from the server'); } else { alert(returnData.deleted + ' files deleted and ' + returnData.undeleted + ' files could not be deleted'); } } }); } </script>
PHP:
<?php $myData = $_POST; if(isset($myData['deletearray']) AND isset($myData['dir'])) { $files = $myData['deletearray']; $dir = $myData['dir']; $deleted = 0; $undeleted = 0; foreach($files as $file) { if(unlink($dir.$file) && unlink($dir.'thumb/'.$file)) { $deleted ++; } else { $undeleted ++; } } print(json_encode(array('deleted' => $deleted, 'undeleted' => $undeleted))); exit(); } ?>
Первым делом-
Используйте $_POST['deletearray']
вместо $_POST[deletearray]
Второе –
Вы не можете возвращать разные переменные из скрипта PHP, каждая вещь, которую вы печатаете, возвращается в обратном вызове ajax, поэтому просто напишите это –
PHP
json_encode(array('totalDeleted' => $deleted, 'totalUndeleted' => $undeleted));
AJAX
... function(response){ response=JSON.parse(response); console.log(response); }
Вы должны использовать json_encode
следующим образом:
json_encode(array('deleted' => $deleted, 'undeleted' => $undeleted));
И вы должны получить vars с data.undeleted
и data.deleted
$.post('delete.php', {'deletearray':deletearray, 'dir':dir}, function(data) { if(data.undeleted == 0) { alert('All ' + data.deleted + ' files delted from the server'); } else { alert(data.deleted + ' files deleted and ' + data.undeleted + ' files could not be deleted'); } }, 'json');