2014-03-19 154 views
-1

我早些时候问过这个问题,但我仍然没有幸运地找到它。简单地说,我尝试使用默认图片更新个人资料图片时,单击删除按钮,我试图使用ajax做到这一点,但是每当我点击按钮什么都没有发生,图片没有更新。我已经测试了自己的PHP页面,它很好地工作,但JS不工作,所以有人可以发现我在这里做错了吗?Ajax请求无法正常工作php

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

在php文件中,你启用'session_start()' –

回答

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 选项()对这些请求没有影响。

+0

不起作用.. – user3412305

+0

@ user3412305“不起作用”不是特别有用。谨慎阐述? –

+0

嗯,当我在控制台中查看第7行的'id id missing''后'..我终于通过设置隐藏字段和使用数据来了解它。感谢您的帮助。最后事实证明onclick是错误的,因为我错过了() – user3412305

0

这是我的理解是jQuery的AJAX请求应该在某处有一个data:选项。另外,我看到你使用GET来发出请求,但是告诉jQuery使用POST。

$.ajax({ 
type: "GET", 
url: "test.php", 
cache: false, 
data : { 
action : 'delete' 
success : function(response) 
{ 
etc... 

我不是jQuery专家,但我认为这可能是您的问题。我能想到的唯一的另一件事是成功功能不能正常工作。检查你的F12菜单并发布任何警告/错误,以便我们可以看到它。