jquery ajax post – 如何获取数据?

我有一个包含一系列图像的个人资料页面。 我想使用jQuery允许用户从服务器中删除图像并在不重新加载整个页面的情况下更新页面。 当它成功时,它将从页面中删除包含div的图像。 我的删除function是PHP; 很简单:

delete.php

 

(已经有用户身份validation,只是为了让他们进入调用delete.php的页面。)

这是一个显示图像的html – 一个接一个地最多可以有5个这样的块:

  

到目前为止,我的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; }); }); 

我关心的部分是ajaxpost。 成功部分如何实际运作? 我需要在我的php文件中做什么才能让ajax知道删除是成功还是失败?

一旦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. 您返回的文本应该出现在提供给success回调函数的data参数中 – 但是您可能还需要确保它的格式与PHP返回的MIME Content-Type兼容,否则jQuery可能会抱怨它可以’解析它,或者:

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

从delete.php返回是否删除成功。 在成功中甚至检查该数据并适当地处理它。

HTH。