jquery ajax post - 如何获取数据?

时间:2011-03-17 15:59:32

标签: php jquery

我有一个包含一系列图片的个人资料页面。我想使用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知道删除是成功还是失败?

3 个答案:

答案 0 :(得分:2)

ajax post请求完成执行后发送请求的文件,如果没有错误,则执行“success”部分中添加的代码,在这种情况下

success: function(data){
  /*The code you need*/
});

前一部分如果执行代码,“data”变量包含从php文件返回的任何内容,它可以是数据,可以是简单的“true”或“false”,你选择要发送什么让你的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 :(得分:1)

你可以想到两个明显的选择:

  1. 您的返回文字应显示在data回调函数提供的success参数中 - 但您可能还需要确保其格式与MIME {{{你的PHP返回的,或jQuery可能会抱怨它无法解析它,或者:

  2. 如果删除不起作用,请使用Content-Type函数从PHP发回5xx Failure类型的消息。然后应该触发一个AJAX header()回调,你需要提供它。

答案 2 :(得分:0)

从delete.php返回是否删除成功。成功甚至检查数据并妥善处理。

HTH。