2014-06-19 102 views
1

以下是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文件中有错误。请帮忙。

+0

如果问题是在PHP中,你为什么不检查错误日志?或者JavaScript控制台呢! –

+5

您可能正在寻找'$ _POST ['deletearray']',而不是'$ _POST [deletearray]'。 – sevenseacat

+1

也是'$ _POST ['dir']' – UserProg

回答

1

做jquer的最好方法Y + 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(); 
    } 
?> 
1

您应该使用json_encode类似以下内容:

json_encode(array('deleted' => $deleted, 'undeleted' => $undeleted)); 

而且你必须让增值经销商与data.undeleteddata.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'); 
+0

echo json_encode($ filenameArray)效果很好... – Tom

+0

你的方法会起作用,应该是数组。 'json_encode($ deleted,$ undeleted)'是错的 – Bora

+0

你说得对。只有数组返回与json。我的问题仍然存在。 – Tom

2

首先东西─

使用$_POST['deletearray'],而不是$_POST[deletearray]

其次东西─

你不能从PHP scrtipt返回不同的变量,每次打印有在AJAX回调返回的事,所以只写这个 -

PHP

json_encode(array('totalDeleted' => $deleted, 'totalUndeleted' => $undeleted)); 

AJAX

... 
function(response){ 
    response=JSON.parse(response); 
    console.log(response); 
} 
相关问题