Ajax-запрос ничего не возвращает. Зачем?

Ниже приведен запрос 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');