Ajax请求不能正常运行php

时间:2014-03-19 02:36:11

标签: javascript php jquery ajax

我之前已经问过这个问题,但我仍然没有把它弄好。简单地说,当我点击“删除”按钮时,我正在尝试使用默认图片更新个人资料图片,而我正在尝试使用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.";
}

2 个答案:

答案 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菜单并发布任何警告/错误,以便我们可以看到它。