我之前已经问过这个问题,但我仍然没有把它弄好。简单地说,当我点击“删除”按钮时,我正在尝试使用默认图片更新个人资料图片,而我正在尝试使用ajax来执行此操作,但是每当我点击按钮时都没有任何反应,图片也没有更新。我已经测试了php页面本身并且它工作得很好但是js没有工作所以有人能发现我在这里做错了吗?
HTML
<button href="javascript:void(0);" onclick="delete;" class="btn btn-default delbutt">Delete</button>
JS
function delete()
{
$.ajax({
type: "POST",
url: "test.php?action=delete",
cache: false,
success: function(response)
{
var $divs = $("<div>" + response + "</div>");
$("#phd").fadeOut('slow');
$(".suc_pic").fadeIn('slow').empty().append($divs.find("#msg"));
}
});
}
这是最后的PHP
$username = $_SESSION["userCakeUser"];
if(isset($_POST["action"]) && !empty($_POST["action"]) || isset($_GET["action"]) && !empty($_GET["action"]))
{
if(isset($_GET["action"]) == "delete")
{
$profile = 'default.jpg';
$pp = $db->prepare("update users set profile = ? where username = ?");
echo $db->error;
$pp->bind_param('ss', $profile, $username->username);
$pp->execute();
}
}
else {
echo "Something is wrong. Try again.";
}
答案 0 :(得分:0)
默认情况下,POST查询不会缓存在jQuery ajax(1)中,因此您可能应该只使用$.post
helper。此外,查询字符串值不会解析为$_POST
超全局,因此您的代码将始终从$_POST["action"]
读取为空。
function delete(){
$.post(
"test.php",
{
action: 'delete'
},
success: function(response){
var $divs = $("<div>" + response + "</div>");
$("#phd").fadeOut('slow');
$(".suc_pic").fadeIn('slow').empty().append($divs.find("#msg"));
}
);
}
(1)如API参考文献中所定义:
使用POST获取的页面永远不会被缓存,因此缓存和ifModified jQuery.ajaxSetup()中的选项对这些请求没有影响。
答案 1 :(得分:0)
据我所知,jQuery AJAX请求应该在某处有data:
选项。另外,我看到你正在使用GET来发出请求,但是告诉jQuery使用POST。
$.ajax({
type: "GET",
url: "test.php",
cache: false,
data : {
action : 'delete'
success : function(response)
{
etc...
我不是jQuery专家,但我认为这可能是你的问题。我唯一能想到的是成功功能不正常。检查您的F12菜单并发布任何警告/错误,以便我们可以看到它。