我有一个包含一系列图像的个人资料页面.我想使用jQuery允许用户从服务器中删除图像并在不重新加载整个页面的情况下更新页面.当它成功时,它将从页面中删除包含div的图像.我的删除功能是PHP; 很简单:
delete.php
<?php
if (isset($_POST['id'])) {
if (unlink($_POST['id'])) {
echo "success";
}
else {
echo "failure";
}
}
?>
Run Code Online (Sandbox Code Playgroud)
(已经有用户身份验证,只是为了让他们进入调用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>
Run Code Online (Sandbox Code Playgroud)
到目前为止,我的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;
});
});
Run Code Online (Sandbox Code Playgroud)
我关心的部分是ajax帖子.成功部分如何实际运作?我需要在我的php文件中做什么才能让ajax知道删除是成功还是失败?
一旦 ajax post 请求完成执行您发送请求的文件,如果没有错误,则会执行您在“成功”部分中添加的代码,在本例中
success: function(data){
/*The code you need*/
});
Run Code Online (Sandbox Code Playgroud)
上一部分如果执行代码,“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.');
}
});
Run Code Online (Sandbox Code Playgroud)
前面的示例是一个生动的示例,说明您可以在“成功”事件的函数内部执行哪些操作。在那里,我处理“无效”状态,否则它会成功,之后我会在无效的情况下刷新几个 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';
}
Run Code Online (Sandbox Code Playgroud)